Вы могли использовать перегрузку метода...
GetFooBar() GetFooBar(int a) GetFooBar(int a, int b)
Это зависит от сигнатур методов, пример, который я дал, пропускает "интервал b" только метод, потому что это имело бы ту же подпись как "интервал" метод.
Вы могли использовать типы Nullable...
GetFooBar(int? a, int? b)
Вы могли тогда проверить, с помощью a. HasValue, чтобы видеть, был ли параметр установлен.
Другая опция состояла бы в том, чтобы использовать 'params' параметр.
GetFooBar(params object[] args)
, Если бы Вы хотели пойти с именованными параметрами, был бы должным быть создавать тип для обработки их, хотя я думаю, что уже существует что-то вроде этого для веб-приложений.
У меня была та же проблема, и я решаю ее таким образом
DataGrid myGrid = new DataGrid();
CollectionView myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(myGrid.Items);
((INotifyCollectionChanged)myCollectionView).CollectionChanged += new NotifyCollectionChangedEventHandler(DataGrid_CollectionChanged);
Затем вам нужно реализовать логику в обработчике событий DataGrid_CollectionChanged
.
Если вы пытаетесь обновить сетку, когда что-то добавляется в саму базу данных, этого не произойдет. Я более знаком с WinForms, чем с WPF, но предполагаю, что нет волшебного способа синхронизировать сетку с базой данных без написания фонового процесса, который непрерывно проверяет изменения базы данных.
Если вы обновляете фактические данные источник сетки (например, Коллекция), тогда сетка обновится.
Установите NotifyOnTargetUpdated = true для привязки ItemsSource и обработайте событие TargetUpdated. Если у вас несколько привязок, то ищите свойство DataTransferEventArgs, чтобы узнать, является ли цель ItemsSource или нет.