Я нашел здесь множество похожих тем, но ни одна из них не касается моей конкретной проблемы.
Мне нужно выделить фон текстового поля при определенных условиях. Я создал свойство Highlight и попытался использовать триггер в стиле, чтобы установить его, но на самом деле он никогда не выделяет текст.
Вот мой стиль, упрощенный:
<Style x:Key="TextBoxStyle" BasedOn="{StaticResource CommonStyles}">
<Style.Triggers>
<Trigger Property="Elements:DataElement.Highlight" Value="True">
<Setter Property="Control.Background"
Value="{DynamicResource EntryBoxHighlightBackground}"/>
</Trigger>
</Style.Triggers>
</Style>
Элементы определяются как:
xmlns:Elements="clr-namespace:MDTCommon.Controls.Forms.Elements">
Затем у меня есть раздел, где применяется стиль:
<!-- Applies above style to all TextBoxes -->
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxContentHolder}" >
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<!-- Overrides the default Error Style -->
</Style>
В коде класса DataElement есть следующее:
public static readonly DependencyProperty HighlightProperty =
DependencyProperty.Register("Highlight", typeof(bool), typeof(DataElement));
public bool Highlight
{
get { return (bool)base.GetValue(HighlightProperty); }
set { base.SetValue(HighlightProperty, value); }
}
Элемент DataElement в конечном итоге является производным от UserControl и содержит ссылку на объект TextBox, а также на другие объекты.
В классе CustomForm, который содержит все объекты DataElement, у меня есть следующее, чтобы установить цвет.
Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;
Итак, первая проблема заключается в том, что при установке свойства Highlight для DataElement фон текстового поля не становится желтым.
Другая проблема заключается в том, что я понимаю, что применяю этот стиль ко всем текстовым полям, и у меня могут быть текстовые поля в других областях, которые фактически не содержатся в элементе данных, что может вызвать проблему привязки.