J'ai un modèle de données pour un type qui définit un groupe de champs de saisie de données, tous avec des paramètres similaires sur les zones de texte, quelque chose comme ceci:Comment définir une propriété de liaison via un style en XAML?
<DataTemplate x:Key="ContactInfo">
<DockPanel>
<HeaderedContentControl Header="Contact Name">
<TextBox Width="200" Text="{Binding Name, ValidatesOnDataErrors=True}"/>
</HeaderedContentControl>
<HeaderedContentControl Header="Contact Quest">
<TextBox Width="200" Text="{Binding Quest, ValidatesOnDataErrors=True}"/>
</HeaderedContentControl>
<HeaderedContentControl Header="Contact Favorite Color">
<TextBox Width="200" Text="{Binding Color, ValidatesOnDataErrors=True}"/>
</HeaderedContentControl>
</DockPanel>
</DataTemplate>
Je voudrais réduire les doubles emplois, autant que possible et d'éliminer autant de propriétés dupliquées que possible. Je sais que je peux me débarrasser de l'attribut Width répété en ajoutant
<DataTemplate.Resources>
<Style TargetType="x:Type TextBox">
<Setter Property="Width" Value="200"/>
</Style>
</DataTemplate.Resources>
au DataTemplate. Cependant, je veux aussi me débarrasser du paramètre redondant "ValidatesOnDataErrors = True".
J'ai essayé de modifier le style pour le définir ainsi:
<DataTemplate.Resources>
<Style TargetType="x:Type TextBox">
<Setter Property="Width" Value="200"/>
<Setter Property="Text.Binding.ValidatesOnDataErrors" Value="True"/>
</Style>
</DataTemplate.Resources>
, mais au moment de la compilation, il se plaint de ne pas être ValidatesOnDataErrors résoluble.
Comment accomplit-on ce que je veux? J'ai plus de 50 champs à styler, et je ne veux pas les changer un par un si je décide de changer ma technique de validation.
C'est utile parce que c'est exactement le problème que je vois, ce n'est pas pratique car j'espérais qu'il y aurait une solution plus facile. Si rien ne se passe mieux, j'utiliserai probablement cette approche. Malheureusement, voter pour cette réponse nécessite plus de réputation que moi, sinon je le ferais. –
Je sais avoir la réputation :-) –
-1: s'il vous plaît éviter les réponses de lien seulement. – ANeves