Триггер, чтобы установить границу кисти wpf textbox не работает - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь установить кисть фона для простого текстового поля, когда текстовое поле имеет фокус.

Это мой стиль

<Style x:Key="TextBoxStyle" TargetType="TextBox">
<Style.Triggers>
 <Trigger Property="IsFocused" Value="False">
  <Setter Property="BorderBrush" Value="Blue"/>
 </Trigger>
 <Trigger Property="IsFocused" Value="True">
   <Setter Property="BorderBrush" Value="Red"/>
   <!--<Setter Property="Background" Value="Red"/>-->
 </Trigger>

IsFocus = False работает правильно, однако триггер для true не работает.

Я закомментировал установщик фона, но если я раскомментирую его, я вижу, что фон установлен на красный.

Что мне нужно сделать по-другому, чтобы изменить цвет рамки, когда текстовое поле имеет фокус?

Спасибо.

1 Ответ

1 голос
/ 25 мая 2011

Если значение BorderThickness равно «1» (по умолчанию), то получаемый фокусированный стиль является стандартным трехмерным стилем элемента управления.Вы можете изменить стиль элемента управления, используя шаблон содержимого, но простым (хотя и не самым элегантным решением) будет просто установить толщину границы на значение, отличное от «1», как я делал в примере ниже.

<TextBox Width="200" Height="25" BorderThickness="0.99">
<TextBox.Style>
    <Style  TargetType="{x:Type TextBox}">
        <Setter Property="BorderBrush" Value="Red" />
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="False">
                <Setter Property="BorderBrush"  Value="Blue" />
            </Trigger>
        </Style.Triggers>
    </Style>
</TextBox.Style>

...