我有一个 WPF Dev Express DxGrid,它通过以下方式绑定到 ObservableCollection。
Private _FamilyList As New ObservableCollection(Of FamilyRecord)
MyGrid.DataSource = _FamilyList
当用户开始在网格中输入信息时,我需要能够检查他们是否错过了一些使其无效的信息。
那么,检查 _FamilyList 是否没有验证错误的最佳方法是什么?
我有一个 WPF Dev Express DxGrid,它通过以下方式绑定到 ObservableCollection。
Private _FamilyList As New ObservableCollection(Of FamilyRecord)
MyGrid.DataSource = _FamilyList
当用户开始在网格中输入信息时,我需要能够检查他们是否错过了一些使其无效的信息。
那么,检查 _FamilyList 是否没有验证错误的最佳方法是什么?
我没有使用 DevExpress 网格的经验,但是在 Xceed WPF DataGridControl 上有一个名为UpdateSourceTrigger
which 控制数据源何时更新的属性(当用户完成编辑整行、完成编辑单元格或使用每个键时)中风)。我确信 DevExpress 也有类似的概念。
这将使您能够控制验证发生的时间。您可以将数据验证逻辑放在FamilyRecord
类本身中。当您检测到错误时,将其FamilyRecord
置于错误状态,该状态将在网格中提供视觉提示。
编辑:
要确定,在保存时,FamilyRecord
您的集合中的任何对象是否有任何错误,您需要这样的东西:
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
ObservableCollection<FamilyRecord> _familyRecords;
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_familyRecords = new ObservableCollection<FamilyRecord>();
_familyRecords.Add(new FamilyRecord(@"Jones", false));
_familyRecords.Add(new FamilyRecord(@"Smith", true));
comboBox1.ItemsSource = _familyRecords;
}
// save button
private void button1_Click(object sender, RoutedEventArgs e)
{
// validate whether any records still have errors before we save.
if (_familyRecords.Any(f => f.HasErrors))
{
MessageBox.Show(@"Please correct your errors!");
}
}
}
public class FamilyRecord
{
public FamilyRecord(string name, bool hasErrors)
{
Name = name;
HasErrors = hasErrors;
}
public string Name { get; set; }
public bool HasErrors { get; set; }
public override string ToString()
{
return this.Name;
}
}
}