1

我有一个 WPF Dev Express DxGrid,它通过以下方式绑定到 ObservableCollection。

Private _FamilyList As New ObservableCollection(Of FamilyRecord)
MyGrid.DataSource = _FamilyList

当用户开始在网格中输入信息时,我需要能够检查他们是否错过了一些使其无效的信息。

那么,检查 _FamilyList 是否没有验证错误的最佳方法是什么?

4

1 回答 1

1

我没有使用 DevExpress 网格的经验,但是在 Xceed WPF DataGridControl 上有一个名为UpdateSourceTriggerwhich 控制数据源何时更新的属性(当用户完成编辑整行、完成编辑单元格或使用每个键时)中风)。我确信 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;
        }
    }
}
于 2009-12-18T11:47:40.110 回答