赞
踩
在WPF开发时,很多控件的Style格式相同,但是其中的图片需要由每个调用的控件来传入决定,
尝试过将Source和ImageSource绑定为TemplateBinding,但是多次尝试都是失败的。
多次尝试后,发现原来图片的路径不能用TemplateBinding绑定传入,但是可以在内部通过
{Binding ElementName=grid,Path=Tag}等方式传入(grid是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>
**
**
<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"/>
通过这种方式,可以将图片路径放入控件的Tag中,再有Tag传入Style内部,实现了动态传入图片的需求。
**
**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。