Par défaut WPF style
J'ai un style global qui définit tous mes TextBox
styles, mais dans certains cas, je veux revenir juste la couleur de premier plan à l'origine de la non-coutume-de couleur de style. J'ai essayé d'utiliser {TemplateBinding Foreground}
à l'intérieur de la spécifiques TextBoxes
que je voulais revenir. Il n'était pas valide XAML et je ne suis pas sûr que ce soit la bonne façon de toute façon.
Des idées? Merci.
OriginalL'auteur xanadont | 2009-06-03
Vous devez vous connecter pour publier un commentaire.
Il ya quelques façons de le faire. Si vous regardez la La Priorité De La Liste sur la MSDN
ensuite, vous pouvez voir que la Présente défini dans les voies 1-8 va se substituer à l'
Foreground
à partir d'un style par défaut. La façon la plus simple de définir la valeur locale de laTextBox
.Une autre chose que vous pouvez faire est d'utiliser la
'BasedOn'
propriété de styles pour remplacer les autres versions. Cela ne demandent de donner une valeur de la clé de votre style par défaut, mais qui peut ensuite être utilisé pour appliquer également la valeur par défaut, comme dans cet exemple:Edit:
Dans le cas que le style par défaut est l'application d'une valeur et que vous voulez revenir à la valeur de base, il existe quelques façons que je peux penser, à la main, pour obtenir ce comportement. Vous ne pouvez pas, que je sache, lier le thème par défaut de la valeur de façon générique.
On peut cependant faire quelques autres choses. Si nous avons besoin de style de ne pas appliquer certaines propriétés, nous pouvons définir le style du
{x:Null}
, arrêtant ainsi le style par défaut de l'application. Ou nous pouvons donner à l'élément de style qui n'hérite pas de la base de style, puis ré-appliquer uniquement les opérateurs que nous avons besoin de:Nous pourrions modifier le style par défaut de sorte que le premier plan ne sera définie que dans certaines conditions, telles que le marquage d'une certaine valeur.
Ah, c'est un peu différent, en effet. Je vais modifier ma réponse à gérer ce cas.
S'avère que mon problème était un peu différent de ce que j'ai décrit. C'était vraiment une question de style appliquée à des zones de texte dans un contrôle ListView. Mais je vais accepter cette réponse pour vous donner une SORTE de jus de depuis vous avez fait un excellent travail en expliquant. Merci!
Merci, content que c'est résolu. Aussi, j'ai trouvé une meilleure façon d'attribuer les Basée à la propriété d'un style. Si vous utilisez Basée="{StaticResource {x:Type de zone de texte}}" puis le style sera automatiquement, basée sur ce que l'défaut le style appliqué pour ce type. Je pense que c'est beaucoup mieux que d'avoir à créer deux styles comme dans mon premier exemple de code.
Merci beaucoup pour l'ajout du commentaire à propos de
BasedOn="{StaticResource {x:Type TextBox}}"
. J'ai essayé de trouver une alternative aux deux approche de style (qui de votre réponse montre), et suis tombé sur le Q&Un ici. Votre commentaire ci-dessus à condition exactement l'astuce que j'ai besoin! À mon humble avis, vous devriez ajouter que le détail de la réponse elle-même (peut-être en laissant les deux approche de style dans aussi comme un exemple, qui peut aider les autres à trouver cette réponse plus facilement).OriginalL'auteur rmoore