Обновление наблюдаемой коллекции на основе выбора в выпадающем списке - PullRequest
1 голос
/ 20 октября 2010

Итак, у меня есть ObservableCollection элементов с именем «Class1», а Class1 имеет свойство с именем «ID».

Я использую сетку данных из WPFToolkit и связываюсь с этой коллекцией.В сетке данных есть столбец со списком, и я связываю его ItemsSource со свойством ID класса.

На данный момент все хорошо, и все заполняется как следует.Что я хочу сделать, это изменить ObservableCollection, чтобы отразить значение, выбранное в ComboBox.

У меня есть ValueConverter, связанный с SelectedItemBinding на ComboBox следующим образом:

SelectedItemBinding="{Binding Path=ID, Converter={StaticResource IDConverter}}

лучший (т.е. одобренный WPF метод) изменения коллекции?Когда вызывается метод IDConverter ConvertBack (), я получаю соответствующий экземпляр Class1, но не могу получить доступ к коллекции Observable из ValueConverter, и у меня также нет доступа к значению SelectedIndex из Datagrid.

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

1 Ответ

0 голосов
/ 26 октября 2010

Для записи, простое решение состоит в том, чтобы создать локальный ресурс со ссылкой на коллекцию, которую вы хотите изменить как свойство зависимости. Затем вы можете передать его как ConverterParameter и получить к нему доступ через метод интерфейса ConvertBack ().

Предупреждение: Скорее всего, вы столкнетесь с исключением DeferRefresh, когда внесете изменения в коллекцию, а затем потеряете фокус. Отличное исправление находится здесь: http://social.msdn.microsoft.com/Forums/en/wpf/thread/187b2b8f-d403-4bf3-97ad-7f93b4385cdf

...