Событие изменения значения ячейки WPF DataGrid
У меня есть настройки, которые выглядят так:
// myDG is a DataGrid whose columns are DataGridTextColumn
ObservableCollection<MyItem> myOC;
// myOC is populated with some new MyItem
myDG.ItemsSource = myOC;
гдеMyItem
инвентарьINotifyPropertyChanged
, Какой способ правильно поймать когдапользователь вводит значение в ячейку?
Я пытался пойматьPropertyChanged
наMyItem
s, но я также периодически обновляю значения в фоновом режиме (идея заключается в том, что, когда пользователь вручную редактирует значение, запускается флаг, который сообщает периодическим вычислениям, чтобы избежать перезаписи введенных вручную данных). ТакPropertyChanged
ловит все, включая периодические обновления, которые я не хочу. Я предполагаю, что это возможно сделать (установив флаг, когда я делаю периодические вычисления, затем проверяя отсутствие флага в обработчике событий PropertyChanged - но я хочу знать, есть ли более простое решение.)
Я пытался пойматьmyDG.CurrentCellChanged
но это срабатывает каждый раз, когда пользователь меняет выбор ячейки, а не конкретно, когда он редактирует содержимое ячейки.
Редактировать: вот XAML:
<DataGrid x:Name="myDG" ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="10,10,182,0" VerticalAlignment="Top" Height="329" ClipboardCopyMode="IncludeHeader">
<DataGrid.Columns>
<DataGridTextColumn Header="Col1" Binding="{Binding Prop1}" IsReadOnly="True"/>
<DataGridTextColumn Header="Col2" Binding="{Binding Prop2}" IsReadOnly="False"/>
</DataGrid.Columns>
</DataGrid>
ЗдесьMyItem
реализация (используетFody / PropertyChanged):
[ImplementPropertyChanged]
class MyItem : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public MyItem()
{
Prop1 = Prop2 = "";
}
}