WPF Datagrid - 如何验证多行并标记所有无效行?

时间:2009-11-13 14:08:21

标签: wpf validation datagrid

我有一个包含行的数据网格,验证取决于他的兄弟姐妹。到目前为止,我正在使用BindingGroups和自定义ValidationRule来同时验证多行。但我无法弄清楚如何更改无效行条目的外观。我返回一个ValidationResult,我的网格得到一个红色边框,但我的样式被忽略了。

到目前为止我的xaml样式代码:

    <Style TargetType="{x:Type dg:DataGridRow}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="BorderThickness" Value="10"/>
                    <Setter Property="BorderBrush" Value="Green"/>
                    <Setter Property="Background" Value="#F6B39E"/>
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

编辑:也许我应该发布一些我的代码 目前我有这个验证声明:

 <dg:DataGrid.RowValidationRules>
      <viewModel:StreamGridValidationRules />
 </dg:DataGrid.RowValidationRules>

使用此代码,我上面的样式设置正确,但一次只能验证一行。因为我需要验证所有兄弟姐妹和他的父母,我将我的代码更改为:

<dg:DataGrid.BindingGroup>
     <BindingGroup Name="BindingGroup">
         <BindingGroup.ValidationRules>
              <viewModel:StreamGridValidationRules />
          </BindingGroup.ValidationRules>
     </BindingGroup>
</dg:DataGrid.BindingGroup>

有了这个,我在BindingGroup中得到了多个项目,但我的样式被完全忽略,网格只获得标准的1px红色边框。

预先感谢任何提示和提示!

TS!

1 个答案:

答案 0 :(得分:0)

如果删除x:Key =“RowStyle”会发生什么情况呢?

原谅我,如果我很明显,但没有看到你的其余代码,我不能说。如果您命名一个样式,它将不会被使用,除非您明确设置它使用它。