【发布时间】:2015-11-26 22:01:09
【问题描述】:
我是WPF的新手,我一直使用自定义的ValidationRule类对各种UI控件进行验证,但是,当第一次使用DataGrid并将它与一个简单的DataTable绑定时,我发现DataGrid有一个相当不错的默认验证检测 DataTable 列的类型,并在单元格值与预期类型不同时给出视觉错误。这对我来说已经足够了,我认为不需要创建自定义验证规则,因为默认规则符合我的目的。但是,我有一个提交按钮,如果此 DataGrid 有任何错误,我需要禁用它,所以我认为使用以下代码使用 Validation.HasError 属性会很容易:
<Button x:Name="btnSubmit" Content="Submit">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=(Validation.HasError),ElementName=dataGrid}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="True"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
但不幸的是,无论我在运行时的数据网格单元格中输入什么值,Validation.HasError 似乎总是 False。默认的视觉验证工作正常,当输入不正确的值时,单元格会出现红色边框,但是,不会发送任何通知表明 dataGrid 有错误。
有没有什么方法可以在 XAML 中检测到 dataGrid 的默认可视化验证是否产生了错误?还是我必须为此使用自定义验证规则?
【问题讨论】:
-
您的目标是哪个版本的 .Net?
-
这是2015年最新的一个社区
-
2015 社区是一名编辑。您的目标是什么版本的 .Net?编辑器可以使用 .Net 2.0、3、3.5、4、4.5、4.51、4.52 和 4.6 项目。不同级别的 .Net 具有不同的 Xaml 特性。顺便说一句,我会创建一个小的测试网格/数据/绑定来演示您所看到的并发布它。有不同的方法来处理验证,它不一定清楚你正在使用的那个。
-
感谢您的回复。我发现了 Validation.hasError 总是错误的原因。这是因为错误仅在数据网格单元格中,而不在数据网格本身中。错误不会从子(单元格)转移到父(数据网格)。
标签: c# wpf validation xaml datagrid