WPF DataGrid - 验证建议

问题描述 投票:0回答:2

我们正在使用 MVVM 实现 WPF 业务应用程序。 目前,我们正在尝试确定显示 DataGrid 验证错误的最佳方式。 目前我们正在尝试这样做:

1) View 用户控件包含绑定到位于关联 ViewModel 中的实体框架对象 EntityCollection 的数据网格

2)ViewModel 实现了 IDataErrorInfo 接口。 在 ViewModel 中有一些普通属性,包括用于实现 IDataErrorInfo.Item

的属性

3)实现 IDataErrorInfo.Item 的属性从底层模型调用验证以确定是否存在任何验证问题

这适用于视图上的任何文本框或组合框 - 验证正在按预期进行处理。 但对于数据网格,我们被难住了 - 无论我们尝试什么,验证都不会发生。目前它的定义是这样的:

<DataGrid x:Name="dgWikiNames" ItemsSource="{Binding Wiki_Names, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnSourceUpdated=True}" AutoGenerateColumns="False">
                        <DataGrid.RowValidationRules>
                            <DataErrorValidationRule ValidationStep="UpdatedValue"/>                            
                        </DataGrid.RowValidationRules>
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="First Name">
                                <DataGridTextColumn.Binding>
                                    <Binding Path="First_Name" ValidatesOnDataErrors="True">
                                        <Binding.ValidationRules>
                                            <DataErrorValidationRule/>
                                            <!--<local:CellDataInfoValidationRule ValidationStep="UpdatedValue"/>-->
                                        </Binding.ValidationRules>
                                    </Binding>
                                </DataGridTextColumn.Binding>
                            </DataGridTextColumn>
                            <DataGridTextColumn  Header="Is Primary" Binding="{Binding Primary_Flag}"/>
                        </DataGrid.Columns>
                    </DataGrid>

如果有人有任何指示或建议,我们将不胜感激。 谢谢

wpf validation datagrid
2个回答
1
投票

将以下内容添加到您的绑定中:

ValidatesOnDataErrors="True" NotifyOnValidationError="True"

0
投票

确保以下内容适合您

  1. 添加 Itemsource 作为 ObservableCollection 属性 属性。 [ItemsSource="{绑定测量}"]

    System::Collections::ObjectModel::ObservableCollection^ 测量{ getter();设置器();}

而MeasurementData是参考类,它实现了IDataErrorInfo,并且该类具有高度、宽度、深度等属性。

2.将 DataGridTextColumn 绑定到单个属性(高度、宽度、深度)。

Binding="{Binding Height, Delay=1000, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True, ValidatesOnNotifyDataErrors=True, ValidatesOnExceptions=True}"

3.添加设置器以突出显示 WPF 中的红色装饰器到

4.在IDataErrorInfo中,您可以获得需要添加验证逻辑的属性索引器。

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.