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