1

次の方法でObservableCollectionにバインドされているWPFDevExpressDxGridがあります。

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

ユーザーがグリッドに情報を入力し始めたら、情報を見逃して無効になっていないかどうかを確認できる必要があります。

では、_FamilyListに検証エラーがないことを確認する最良の方法は何ですか?

4

1 に答える 1

1

DevExpressグリッドの使用経験はありませんが、Xceed WPF DataGridControlにUpdateSourceTriggerは、データソースがいつ更新されるか(ユーザーが行全体の編集を終了したとき、セルの編集を終了したとき、またはすべてのキーを使用したとき)を制御するというプロパティがあります。脳卒中)。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 に答える