所有DataGrids的DataGridTextColumn.EditingElementStyle

时间:2013-01-01 12:12:36

标签: wpf validation

虽然通过说"you cannot use the Validation.ErrorTemplate attached property like you would with simple controls" MSDN似乎令人困惑,但我发现在我的每个窗口xaml中都可以设置验证错误模板,如下所示:

<DataGridTextColumn ...>
    ...
    <DataGridTextColumn.EditingElementStyle>
        <Style>
            <Setter Property="Validation.ErrorTemplate" 
                    Value="{StaticResource MyValidationErrorTemplate}"/>
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

我现在想要的是为共享主题资源字典中的所有数据网格设置错误模板。但我无法做到以下几点:

<Style TargetType="{x:Type DataGridTextColumn}">
    <Setter Property="Validation.ErrorTemplate" 
            Value="{StaticResource MyValidationErrorTemplate}"/>
</Style>

因为DataGridTextColumn不是从FrameworkElement继承的;因此不能具有样式属性(参见Why can't I style a DataGridTextColumn?)。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我正在寻找同一个问题的答案。您可以使用类似以下样式的方式使赋值略微冗长。

<Style x:Key="TextColumnErrorStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplateStyle}"></Setter>
</Style>

用法:

<DataGridTextColumn Width="2*"  Header="IP Address" 
    Binding="{Binding IpDestination,    
    UpdateSourceTrigger=PropertyChanged, 
    ValidatesOnExceptions=True}"
    EditingElementStyle="{StaticResource TextColumnErrorStyle}"/>

呃。