WPF - пример с DataGridComboBoxColumn
Иногда проще всего найти самые простые примеры.,
У меня есть datagrid с 2 столбцами. В одном столбце содержится информация о роли, а в другом столбце должен быть поле со списком доступных пользователей. Данные в combobox не связаны с данными в первом столбце. Меня отбрасывает тот факт, что в combobox нет datacontext, только источник данных, и я тоже не могу использовать привязку.
Может ли кто-нибудь указать мне простой пример, который использует два разных набора данных для данных в таблице и поле со списком?
Ответы
Ответ 1
столбцы в datagrid не имеют datacontext, поскольку они никогда не добавляются в визуальное дерево. звук немного странный, но посмотрите на vinces blog, и он получил хороший пример визуального макета. после того, как сетка будет нарисована, ячейки имеют контекст данных, и вы можете установить в них источник элементов со списками, используя обычные привязки (не статические ресурсы..)
вы можете получить доступ к источнику элементов со списком как таковой
<dg:DataGridComboBoxColumn>
<dg:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</dg:DataGridComboBoxColumn.EditingElementStyle>
</dg:DataGridComboBoxColumn>
посмотрите здесь, а также здесь для некоторого кода
Ответ 2
Вместо использования DataGridTextColumns вместо этого используется DataGridComboBoxColumn. Затем один заполняет данные с помощью ItemsSource, который в приведенном ниже примере указывает на внешнее перечисление в статическом ресурсе и, наконец, связывает результат с целевым объектом, который будет удерживать выбор пользователя в SelectedItemBinding.
<DataGrid.Columns>
<DataGridComboBoxColumn Header="MySelections"
SelectedItemBinding="{Binding MySelectionsProperty}"
ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>
См. полный пример в MSDN по адресу Класс DataGridComboBoxColumn