WPF DataGrid, как добраться, когда ItemsSource обновляет

Вы могли использовать перегрузку метода...

GetFooBar()
GetFooBar(int a)
GetFooBar(int a, int b)

Это зависит от сигнатур методов, пример, который я дал, пропускает "интервал b" только метод, потому что это имело бы ту же подпись как "интервал" метод.

Вы могли использовать типы Nullable...

GetFooBar(int? a, int? b)

Вы могли тогда проверить, с помощью a. HasValue, чтобы видеть, был ли параметр установлен.

Другая опция состояла бы в том, чтобы использовать 'params' параметр.

GetFooBar(params object[] args)

, Если бы Вы хотели пойти с именованными параметрами, был бы должным быть создавать тип для обработки их, хотя я думаю, что уже существует что-то вроде этого для веб-приложений.

15
задан iLemming 10 July 2009 в 00:06
поделиться

3 ответа

У меня была та же проблема, и я решаю ее таким образом

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

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

26
ответ дан 1 December 2019 в 01:05
поделиться

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

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

3
ответ дан 1 December 2019 в 01:05
поделиться

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

8
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: