Триггер для установки wpf textbox borderbrush не работает

#wpf-controls

#wpf-элементы управления

Вопрос:

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

Это мой стиль

 <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» (по умолчанию), то вы получаете сфокусированный стиль, который соответствует стандартному 3D-стилю элемента управления. Вы могли бы изменить стиль элемента управления с помощью contenttemplate, но простым (хотя и не самым элегантным решением) было бы просто установить толщину границы на что-то другое, чем «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>