所有DataGrids的DataGridTextColumn.EditingElementStyle

syn*_*tic 5 validation wpf

虽然MSDN似乎令人困惑,他说"你不能像使用简单控件一样使用Validation.ErrorTemplate附加属性",但我发现在我的每个窗口xaml中都可以设置验证错误模板,如下所示:

<DataGridTextColumn ...>
    ...
    <DataGridTextColumn.EditingElementStyle>
        <Style>
            <Setter Property="Validation.ErrorTemplate" 
                    Value="{StaticResource MyValidationErrorTemplate}"/>
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)

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

<Style TargetType="{x:Type DataGridTextColumn}">
    <Setter Property="Validation.ErrorTemplate" 
            Value="{StaticResource MyValidationErrorTemplate}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

因为DataGridTextColumn不是继承自的FrameworkElement; 因此不能有样式属性(请参阅为什么我不能设置DataGridTextColumn样式?).

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

小智 0

我正在寻找同一问题的答案。您可以使用类似以下样式的方式使作业稍微不那么冗长。

<Style x:Key="TextColumnErrorStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplateStyle}"></Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

用法:

<DataGridTextColumn Width="2*"  Header="IP Address" 
    Binding="{Binding IpDestination,    
    UpdateSourceTrigger=PropertyChanged, 
    ValidatesOnExceptions=True}"
    EditingElementStyle="{StaticResource TextColumnErrorStyle}"/>
Run Code Online (Sandbox Code Playgroud)

啊。