WPF DataGrid как получить при обновлении ItemsSource - PullRequest
15 голосов
/ 10 июля 2009

Какое событие возникает при обновлении источника DataGrid? Я пробовал DataContextChanged и SourceUpdated, но так и не получилось.

На самом деле мне нужна простая вещь. Я хочу, если появляется новая строка, прокрутите полосу прокрутки GridView вниз, чтобы увидеть, что это было.

Ответы [ 4 ]

27 голосов
/ 23 февраля 2010

У меня была такая же проблема, и я справляюсь с этим

DataGrid myGrid = new DataGrid();
CollectionView myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(myGrid.Items);
((INotifyCollectionChanged)myCollectionView).CollectionChanged += new NotifyCollectionChangedEventHandler(DataGrid_CollectionChanged);

Затем необходимо реализовать логику в обработчике событий DataGrid_CollectionChanged.

8 голосов
/ 27 января 2010

Установите NotifyOnTargetUpdated = true для привязки ItemsSource и обработайте событие TargetUpdated. Если у вас несколько привязок, найдите свойство DataTransferEventArgs, чтобы выяснить, является ли целью ItemsSource или нет.

3 голосов
/ 10 июля 2009

Если вы пытаетесь обновить сетку при добавлении чего-либо в саму базу данных, этого не произойдет. Я больше знаком с WinForms, чем с WPF, но я предполагаю, что нет волшебного способа синхронизировать сетку с базой данных без написания какого-либо фонового процесса, который постоянно проверяет изменения базы данных.

Если вы обновляете фактический источник данных сетки (например, Коллекция), то это обновит сетку.

2 голосов
/ 28 декабря 2011

Со своей стороны я использовал уведомление SelectionChange, которое вызывает каждое событие Del / Add / Edit / Select Это очень хорошо работает

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Console.WriteLine("hi");
}
...