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