所以我第一次使用 wpf 应用程序并遇到了一个绊脚石。
我正在使用来自第三方(actipro)的主题,我可以将该主题中的各个属性设置为我想要的任何内容
<Style.Resources>
<SolidColorBrush x:Key="{x:Static themes:AssetResourceKeys.ExpanderHeaderBackgroundNormalBrushKey}" Color="Yellow" />
</Style.Resources>
实际上,我想做的是将该声明放在触发器中,如下所示
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<SolidColorBrush x:Key="{x:Static themes:AssetResourceKeys.ExpanderHeaderBackgroundNormalBrushKey}" Color="Yellow" />
</Trigger>
</Style.Triggers>
但这当然是非法的语法。
我知道我可以设置这样的条件样式
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
甚至像这样
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource {x:Static themes:AssetResourceKeys.ExpanderHeaderBackgroundNormalBrushKey}}" />
</Trigger>
</Style.Triggers>
但这会将背景设置为资源定义的颜色。那不是我所追求的。
我需要设置 ExpanderHeaderBackground,这不是 setter 的可用属性。
在我看来,能够在触发器中定义资源本身似乎是合乎逻辑的。然后,它们仅在满足某些条件时才适用。显然这不是 wpf 的工作方式。
有谁知道我怎么能做到这一点?