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

Другие вопросы по тегам