5

虽然 MSDN 说“您不能像使用简单控件那样使用 Validation.ErrorTemplate 附加属性”似乎令人困惑,但我发现可以在我的每个窗口 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; 因此不能具有样式属性(请参阅为什么我不能设置 DataGridTextColumn 的样式?)。

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

4

1 回答 1

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}"/>

啊。

于 2016-06-04T15:19:34.133 回答