0

スタイルを使用して、ユーザーがこのように画像にカーソルを合わせたときに何が起こるかを定義します。

<Style TargetType="{x:Type Image}">
    <Setter Property="Source" Value="c:\\2.bmp"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Source" Value="C:\\1.bmp"/>
        </Trigger>
    </Style.Triggers>
</Style>

しかし、アプリケーションに含めるすべての画像について、「値」属性で定義された同じ画像が使用されていると思います。このカスタム オーバーライドを使用せずに、別の画像に別のオンホバー画像が必要な場合はどうすればよいですか?

この場合、何を使用すればよいですか?または、WPF で画像のホバリングを処理するより良い方法は何ですか?

4

2 に答える 2

1

Jon が提案したように x-key 値を定義する必要があります。

<Style x:Key="Name_of_your_style"  TargetType="{x:Type Image}">
<Setter Property="Source" Value="c:\\2.bmp"/>
<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Source" Value="C:\\1.bmp"/>
    </Trigger>
</Style.Triggers>

このスニペットを使用している間、次のようなものを使用します

 <Image Style="{StaticResource Name_of_your_style}"  Name="I1" />
 <Image Name="I2" /> 

これにより、画像I1(最初に定義)が上記のテンプレート(ホバー処理時)を使用し、他の画像は現在のテンプレートのままになります。

于 2012-08-17T20:13:57.653 に答える
0

x:Keyいくつかの異なるスタイルを定義して、値ではなく値を与えることができますTargetType。次にStyle、画像の属性をx:Key適切なスタイルに設定するだけです。

単一のスタイルを画像の大部分に適用したいが、そのうちのいくつかだけをオーバーライドしたい場合は、2 つの方法を組み合わせることができます。(属性を介して) 要素のタイプにスタイルを割り当てる場合、TargetType属性を明示的に指定することにより、特定の要素でこれをオーバーライドできますStyle。また、 を設定Style={x:Null}すると、要素をデフォルトのスタイルに戻すことができます。

于 2012-08-17T19:42:28.600 に答える