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;
}
}
}