无法设置WPF控件的样式

时间:2010-02-01 20:13:50

标签: wpf styles

我在这里疯了!我错过了什么,为什么它没有造型:

<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控件!

2 个答案:

答案 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