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