2016-03-03 1 views
1

Получил DataTemplateColumn в приложении DataGrid приложения WPF. DataTemplate определяет ComboBox. Список предметов, представленных ComboBox, необходимо изменить в зависимости от значения другого поля связанного ItemsSource для той же строки, что и у ComboBox. Я не использую ComboBoxColumn и не могу по другим причинам.Контекстные сообщения Элементы Comboxbox в DataGrid

В настоящее время попытались BindingItemsSource из ComboBox к ObjectDataProvider в XAML, а затем установив MethodParameter в ObjectDataProvider в обработчике SelectionChanged событий в DataGrid.

Combobox элементы в соответствующих рядах обновляются правильно, если выбрано, однако все остальные ComboBoxes также были обновлены. Это приводит к тому, что выбранный элемент ранее установленного ComboBox в предыдущей строке очистился. Я подозреваю другое обновление ComboBoxes, потому что они получают событие PropertyChanged от ObjectDataProvider, к которому они привязаны. Я попытался установить Binding Mode на ItemsSourceComboBox на OneTime, но это не помогло.

Любые идеи о том, как получить ComboBox связать его Items когда DataGrid Row выбран, но не пересвязать когда (последующее ComboBox и) выбран другой ряд?

+0

Если возможно, вы можете добавить в 'ViewModel' свойства' DataGrid' новое свойство 'Combobox'' ItemsSource'. И привяжите это свойство вместо использования ObjectDataProvider. – bars222

+0

Сладкий, в моем случае да, у меня есть контроль над моей виртуальной машиной, поэтому я сделал то, что вы предлагали, и это работает. – OrdinaryOrange

ответ

0

Добавлен дополнительный объект IEnumerable в связанный с DataGrid набор объектов Entity (плюс логика для создания элементов), а затем Databound ItemsSource ComboBox к этому. В моем случае мне не нужно было добавлять свойство для привязки Selecteditem, поскольку я уже привязывал свойства SelectedValue и Text ComboBox.

Смежные вопросы