当前位置:   article > 正文

WPF中style的Image或ImageBrush中的Source和ImageSource由调用者传入的方法_wpf imagebrush imagesource

wpf imagebrush imagesource

WPF开发时,很多控件的Style格式相同,但是其中的图片需要由每个调用的控件来传入决定,
尝试过将Source和ImageSource绑定为TemplateBinding,但是多次尝试都是失败的。

多次尝试后,发现原来图片的路径不能用TemplateBinding绑定传入,但是可以在内部通过
{Binding ElementName=grid,Path=Tag}等方式传入(grid是style中一个控件的名称),
这样问题就变的简单了。

话不多说,直接看下面代码

**

Style定义:

**

<Style x:Key="dragbtn0" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid x:Name="grid" VerticalAlignment="Top" Margin="0" Tag="{TemplateBinding Tag}">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="43"/>
                            <RowDefinition Height="18"/>
                        </Grid.RowDefinitions>
                        <Ellipse Name="ep" Width="36" Height="36" VerticalAlignment="Top" Stroke="LightBlue">
                            <Ellipse.Fill>
                                <ImageBrush x:Name="coles" ImageSource="{Binding ElementName=grid,Path=Tag}"/>
                            </Ellipse.Fill>
                        </Ellipse>
                        <TextBlock Name="et" Text="{TemplateBinding Content}" Grid.Row="1" HorizontalAlignment="Center" FontSize="11"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="ep" Property="Width" Value="40"/>
                            <Setter TargetName="ep" Property="Height" Value="40"/>
                            <Setter TargetName="et" Property="FontSize" Value="12"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

**

控件调用

**

<Button Name="btn0" Content="网抓数据" Height="60" Width="60" HorizontalAlignment="Left" VerticalAlignment="Top"
 Cursor="SizeAll" Style="{StaticResource dragbtn0}" Tag="..\MySources\images\inputweb.png"
  PreviewMouseLeftButtonDown="temtest_MouseDown" MouseLeftButtonUp="Window_MouseLeftButtonUp"/>

  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
通过这种方式,可以将图片路径放入控件的Tag中,再有Tag传入Style内部,实现了动态传入图片的需求。

**

实现的效果如下:

**

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/264506
推荐阅读