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为适当样式的属性。

如果您想将单一样式应用于大多数图像,但您只想覆盖其中的几个,那么您可以结合这两种方法。如果您将样式分配给一种元素(通过TargetType属性),您可以通过显式指定它们的属性来覆盖特定元素的样式Style。此外,如果设置Style={x:Null},则可以使元素恢复为默认样式。

于 2012-08-17T19:42:28.600 回答