Невозможно стилизовать мои элементы управления WPF - PullRequest
1 голос
/ 01 февраля 2010

Я схожу с ума здесь! Что мне не хватает и почему ничего не стилизуется:

<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 ]

4 голосов
/ 01 февраля 2010

Это происходит потому, что локальные значения переопределяют значения стиля. (Свойства, установленные непосредственно для элемента, имеют очень высокий приоритет.) Вы устанавливаете Background непосредственно в TextBox, поэтому 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" />
0 голосов
/ 01 февраля 2010

Определите Style до TextBox или используйте DynamicResource вместо StaticResource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...