0

我的应用程序中有几个按钮,我希望在启用、按下和鼠标悬停时为它们提供不同的图像。我在这个网站上发现了这个问题,它告诉我如何为按钮执行此操作。

用于启用和禁用 WPF 中按钮状态的不同图像

但是由于我的应用程序上有几个按钮,因此很难为每个按钮编写相同的代码。有没有一种方法可以定义参数化样式,例如,我可以将每个按钮定义如下:

 <Button ActiveImage=" active image name" DisableImage="disabled image name" style="{StaticResource MyStyle}"/>

哪个缩短了我的示例?

4

1 回答 1

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>

(代码是从这个答案中窃取的)。

不要忘记声明为类local所在的命名空间ButtonHelper

于 2012-10-13T19:00:52.563 回答