Как мне ответить на измененные ячейки в CodePlex WPF DataGrid? - PullRequest
1 голос
/ 28 мая 2009

На мой взгляд, я реализовал WPF DataGrid из CodePlex :

<toolkit:DataGrid x:Name="CodePlexDataGrid" 
    Style="{StaticResource ToolkitDataGrid}" 
    ItemsSource="{Binding Customers}"/>

Это связано с ObservableCollection в моей ViewModel:

private ObservableCollection<Customer> _customers;
public ObservableCollection<Customer> Customers
{
    get
    {
        return _customers;
    }

    set
    {
        _customers = value;
        OnPropertyChanged("Customers");
    }
}

Когда я изменяю данные в сетке, они меняются, но Я не могу найти ни одного события , которое я могу обработать, чтобы поймать эти изменения, например DataGridCellChanged, чтобы я мог сохранить данные , которые были введены обратно в базу данных.

Каков процесс , с помощью которого мы можем фиксировать изменения в ячейках и сохранять их обратно в базу данных?

Ответы [ 2 ]

0 голосов
/ 29 мая 2009

Попробуйте подойти к нему по-другому. Вместо привязки к событиям в DataGrid реализуйте INotifyPropertyChanged для Customer и обрабатывайте события изменения свойств объектов Customer. В WPF (в отличие от Silverlight) я думаю, что вы можете использовать BindingList вместо ObservableCollection для просмотра изменений свойств для любого элемента в коллекции.

Для Silverlight я создал подкласс ObservableCollection, который связывал обработчики событий PropertyChanged для любого элемента, добавленного в коллекцию, а затем помещал их в пузырь до события ItemPropertyChanged, представленного коллекцией.

Таким образом, я мог бы сделать:

myCollection.ItemPropertyChanged += (sender,e) => {
   // sender is the item whose property changed
   // e is PropertyChangedEventArgs which has the name of the property that changed
}
0 голосов
/ 29 мая 2009

Я использовал события CellEditEnding и RowEditEnding, они не соответствуют вашим потребностям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...