La liaison d'un WPF Style de Déclencheur à une coutume de la propriété de dépendance

J'ai trouvé de nombreuses discussions ici, mais aucun qui semblent répondre à mon problème spécifique.

J'ai besoin de mettre en évidence l'arrière-plan d'une zone de texte sous certaines conditions. J'ai créé un point culminant de la propriété et essayé d'utiliser un déclencheur dans un style de jeu, mais ça ne fait jamais mettre le texte en surbrillance.

Ici, c'est mon Style, simplifié:

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

Éléments est défini comme:

xmlns:Elements="clr-namespace:MDTCommon.Controls.Forms.Elements">

Puis j'ai de la section où le style est appliqué:

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

Dans le code-behind de la DataElement classe est la suivante:

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); }
}

Un DataElement en fin de compte provenant de UserControl et il contient une référence à l'objet TextBox ainsi que d'autres objets.

Dans le CustomForm classe qui abrite tous les DataElement objets que j'ai suivantes pour définir la couleur.

Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;

Donc, la première question est que la définition de la mettre en Évidence la propriété de la DataElement ne cause pas de la zone de texte d'arrière-plan pour dessiner en jaune.

L'autre problème est que je me rends compte que je suis de l'application de ce style pour toutes les zones de texte et j'ai pu avoir des zones de texte dans d'autres domaines qui ne sont pas réellement contenue dans un DataElement, ce qui peut causer un problème de liaison.

Essayez d'ajouter un setter arrière-plan pour votre style de
J'ai un setter.
J'en ai laissé beaucoup de Style pour garder les choses simples et de se concentrer sur les domaines où je pense que le problème pourrait être.
Juste pour être sûr: ne devriez-vous pas également spécifier une assemblée des "Éléments" dans le code XAML? La fenêtre sortie affiche toutes les erreurs?

OriginalL'auteur WPFNewbie | 2012-08-01