Обновление наблюдаемой коллекции на основе выбора поля со списком

Итак, у меня есть 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, но это кажется ложным, и я предполагаю, что должен быть какой-то более изящный способ сделать это с привязкой данных.


person user472970    schedule 20.10.2010    source источник
comment
Итак, проблема в том, что когда вы изменяете идентификатор, он не отражается в сетке данных? или когда вы изменяете значение В сетке данных, оно больше нигде не отражается   -  person TerrorAustralis    schedule 26.10.2010


Ответы (1)


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

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

person user472970    schedule 26.10.2010