2010-07-12 7 views
2

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.

Répondre

1

Peut être this sera utile.

+0

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

+0

Je sais avoir la réputation :-) –

+0

-1: s'il vous plaît éviter les réponses de lien seulement. – ANeves

Questions connexes