WPF Datagrid - 如何验证多行并标记所有无效的? [英] WPF Datagrid - How to validate multiple rows and mark all invalid ones?

查看:498
本文介绍了WPF Datagrid - 如何验证多行并标记所有无效的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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

 < Style TargetType ={x:Type dg:DataGridRow}> 
< Style.Triggers>
< Trigger Property =Validation.HasErrorValue =true>
< Setter Property =BorderThicknessValue =10/>
< Setter Property =BorderBrushValue =Green/>
< Setter Property =BackgroundValue =#F6B39E/>
< Setter Property =ToolTipValue ={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!

解决方案

如果您删除x:Key =RowStyle,那会发生什么?


$ b $原谅我,如果我是明显的,但没有看到你的其余的代码,我不能告诉。如果你正在命名一个风格,它将不会被使用,除非你明确地设置它被使用。


I have a datagrid with rows where the validation depends on his siblings. So far I'm using BindingGroups and a custom ValidationRule to validate multiple rows a the same time. But I can't figure out how to change the appereance of the invalid row entries. I return a ValidationResult and my grid gets a red border but my style gets ignored.

My xaml style code so far:

    <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>

edit: maybe I should post a little more of my code at the moment I have this validation declaration:

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

With this code my style above gets set correctly, but only one row gets validated at a time. As I need to validate all siblings and his parent aswell, I changed my code to this:

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

With this I get multiple items in the BindingGroup but my style gets ignored completly and the grid just gets the standard 1px red border.

Thanks beforehand for any tips and hints!

tS!

解决方案

what happens if you remove the x:Key="RowStyle", does it work then?

forgive me if im being obvious, but not seeing the rest of your code, i cant tell. If you are naming a style it wont get used unless you are explicitly setting it to be used.

这篇关于WPF Datagrid - 如何验证多行并标记所有无效的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆