我有一个类型的数据模板,用于定义一堆数据输入字段,所有这些字段都在文本框中具有相似的设置,如下所示:
<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>
我希望尽可能减少重复,并尽可能多地消除重复的属性。我知道我可以通过添加
来消除重复的Width属性<DataTemplate.Resources>
<Style TargetType="x:Type TextBox">
<Setter Property="Width" Value="200"/>
</Style>
</DataTemplate.Resources>
到DataTemplate。但是,我也想摆脱多余的“ValidatesOnDataErrors = True”设置。
我尝试修改样式以便设置它:
<DataTemplate.Resources>
<Style TargetType="x:Type TextBox">
<Setter Property="Width" Value="200"/>
<Setter Property="Text.Binding.ValidatesOnDataErrors" Value="True"/>
</Style>
</DataTemplate.Resources>
但是在编译时它抱怨ValidatesOnDataErrors无法解析。
如何实现我想要的目标?我有超过50个字段用于样式,如果我决定更改我的验证技术,我不想一个接一个地更改所有字段。