我在这里疯了!我错过了什么,为什么它没有造型:
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
<TextBox Width="100" Style="{StaticResource textBoxStyle}" Height="20" Background="Yellow" ></TextBox>
上面的代码没有做任何事情。它没有突出显示TextBox控件!
答案 0 :(得分:4)
这是因为本地值覆盖样式值。 (直接在元素上设置的属性具有非常高的优先级。)你直接在TextBox上设置Background,所以WPF会说,“好吧,他通常希望textBoxStyle背景在聚焦时变成红色,但对于这个特殊的TextBox,他说他是特别希望背景为黄色,所以黄色就是。“
所以解决方法是将黄色背景移动到样式的一部分:
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="Yellow" />
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
并将其从TextBox中删除:
<TextBox Width="100" Style="{StaticResource textBoxStyle}" Height="20" />
答案 1 :(得分:0)
在 TextBox前定义您的Style
或使用DynamicResource
代替StaticResource