Как изменить ItemsSource ComboBox внутри DataGrid? - PullRequest
0 голосов
/ 01 марта 2011

Сценарий : в моем View есть ContentControl, свойство Content которого связано с DataGrid в ViewModel. Я выясню точное количество столбцов для отображения в DataGrid во время выполнения, поэтому я программно создаю DataGrid в ViewModel. ItemsSource моей DataGrid является DataTable. Я устанавливаю DataGrid 'AutoGeneratingColumns' в False, и я вручную создаю столбцы. Моя DataGrid, наряду со многими другими столбцами, имеет два столбца типа ComboBox. Я должен изменить ItemsSource второго ComboBox на основе выбранного индекса первого ComboBox. Таким образом, каждая строка моей DataGrid может иметь разные ItemsSource для второго ComboBox.

Мой вопрос: как я могу динамически изменить ItemsSource второго ComboBox на основе выбранного индекса в первом ComboBox во время выполнения в одной строке DataGrid? Я также хотел бы знать, есть ли лучшее решение, чем мой нынешний подход в этом сценарии?

1 Ответ

0 голосов
/ 01 марта 2011

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

С помощью viewmodels это самый простой метод. Хотя создание столбцов сетки данных в вашем представлении - это не так, вы можете переместить это в вспомогательный класс и вызвать его из кода или подкласса таблицы данных. Знаю, со столбцами времени выполнения это сложно.

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

Другой вариант - добавить в подзаголовки списков выпадающих списков основной коллекции и предварительно заполнить их. И изменить коллекцию combobox 2 на изменения выбранного элемента в combobox 1. Но это потенциально может быть много работы и хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...