1

私はまだWPFを初めて使用しています(最初のアプリを作成しています)が、基本的には、3つの画像(アイドル、ホバー、onClick)を持つある種のコントロールを作成したい(または作成したいと考えています)が、画像を変更できます. だから今私は持っています:

                <Rectangle Height="29" Width="35" Margin="0,2,0,0"
                       HorizontalAlignment="Left" VerticalAlignment="Top" 
                       Name="BTN_OpenDeviceSettings" ToolTip="Open Device Settings"
                       Fill="{DynamicResource device_grid___open_grid}"
                       MouseEnter="BTN_OpenDeviceSettings_MouseEnter"
                       MouseLeave="BTN_OpenDeviceSettings_MouseLeave"
                       MouseLeftButtonDown="BTN_OpenDeviceSettings_MouseLeftButtonDown"
                       MouseLeftButtonUp="BTN_OpenDeviceSettings_MouseLeftButtonUp">
                </Rectangle>

そして、それはうまく機能します。しかし、グラフィックをコードから分離したいので、これを機能させるために、C# コードで塗りつぶし画像を手動で交換します。私は次のようなコードを見てきました:

<Button Name="btnNext" Padding="15,3" HorizontalAlignment="Right" Click="OnButtonClick">
    <Image Width="90" Height="90">
        <Image.Style>
            <Style TargetType="Image">
                <Setter Property="Source" Value="/resources/a.png" />
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Source" Value="/resources/b.png" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>
</Button>

だから私はそれが私が望んでいるものだと思います。しかし、理想的には、これらのボタンをたくさん用意するつもりなので、これを行うための何かを作成できます:

<MyButton>
  <Images idleImage="someimage.png" hoverImage="someOtherImage.png" clickImage="someOtherOtherImage.png" onCLick="some_cSharp_method_to_call" />
</MyButton>
4

1 に答える 1

0

最初の解決策: オーバーラップ/クリック/その他の操作に使用する画像を宣言するボタンのコントロール テンプレート (ボタン内に画像のみを表示する場合はスタイル) を作成できます。このスタイルは、指定されたキーを持つため、必要なすべてのボタンで共有されます。

2番目の解決策:ボタンをサブクラス化し、ホバー/アイドル/クリックされた画像の3つの依存関係プロパティを宣言できます。次に、その依存関係プロパティを使用するサブクラス化されたボタンのデフォルト テンプレート (ボタンが画像のみを表示する場合はスタイル) が必要になります。

于 2012-07-16T22:43:41.837 に答える