У меня нет опыта работы с сеткой DevExpress, но в Xceed WPF DataGridControl есть свойство с именем UpdateSourceTrigger
, которое контролирует, когда обновляется источник данных (когда пользователь заканчивает редактирование всей строки, завершает редактирование ячейка, или с каждым нажатием клавиши). Я уверен, что у DevExpress есть похожая концепция.
Это даст вам контроль над , когда произойдет проверка. Вы можете поместить свою логику проверки данных в сам класс FamilyRecord
. При обнаружении ошибки переведите FamilyRecord
в состояние ошибки, которое обеспечит визуальную подсказку в сетке.
EDIT:
Чтобы при сохранении определить, есть ли у каких-либо 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;
}
}
}