我的应用程序中有几个按钮,我想为它们启用,按下和鼠标悬停时有不同的图像。我在这个网站上发现了这个问题,告诉我如何为一个按钮做这个。
different images for enable and disable states of a button in WPF
但由于我的应用程序上有几个按钮,因此很难为每个按钮编写相同的代码。有没有办法可以定义参数化样式,例如我可以定义我的每个按钮如下:
<Button ActiveImage=" active image name" DisableImage="disabled image name" style="{StaticResource MyStyle}"/>
缩短了我的xamle?
答案 0 :(得分:0)
好吧,你可以使用附加属性来做到这一点。您可以在单独的类中定义它们(例如,ButtonHelper
),如下所述:http://msdn.microsoft.com/en-us/library/ms749011.aspx#custom。
接下来,使您的样式引用附加属性:
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel Orientation="Horizontal" >
<Image Name="PART_Image"
Source="{Binding (local:ButtonHelper.NormalImageSource),
RelativeSource={RelativeSource Self}}" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source"
Value="{Binding (local:ButtonHelper.HoverImageSource),
RelativeSource={RelativeSource Self}}"
TargetName="PART_Image"/>
</Trigger>
<!-- and so on -->
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
(代码是从this answer偷来的。)
不要忘记将local
类所在的命名空间声明为ButtonHelper
!