Привязка триггера стиля WPF к пользовательскому свойству зависимости

Я нашел здесь множество похожих тем, но ни одна из них не касается моей конкретной проблемы.

Мне нужно выделить фон текстового поля при определенных условиях. Я создал свойство 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 фон текстового поля не становится желтым.

Другая проблема заключается в том, что я понимаю, что применяю этот стиль ко всем текстовым полям, и у меня могут быть текстовые поля в других областях, которые фактически не содержатся в элементе данных, что может вызвать проблему привязки.

9
задан Michael Myers 21 June 2013 в 23:01
поделиться