0

アプリケーションにいくつかのボタンがあり、それらが有効になっているとき、押したとき、マウスオーバーしたときに、それらに異なる画像を表示したいと考えています。ボタンに対してこれを行う方法を示すこのサイトでこの質問を見つけました。

WPF のボタンの状態を有効および無効にするための異なるイメージ

しかし、アプリケーションにいくつかのボタンがあるため、それぞれに同じコードを書くのは困難です。パラメータスタイルを定義できる方法はありますか?たとえば、各ボタンを次のように定義できます:

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

私のxamleを短くするのはどれですか?

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 に答える