WPF - пример с DataGridComboBoxColumn - PullRequest
11 голосов
/ 12 ноября 2009

Иногда самые простые примеры труднее всего найти. , ,

У меня есть сетка данных с 2 столбцами. В одном столбце содержится информация о роли, в другом столбце должно быть поле со списком доступных пользователей. Данные в выпадающем списке не связаны с данными в первом столбце. Меня сбивает с толку тот факт, что в выпадающем списке нет текстового контекста, только источник данных, и я не могу использовать привязку.

Может кто-нибудь указать мне простой пример, который использует два разных набора данных для данных в таблице и поле со списком?

Ответы [ 2 ]

8 голосов
/ 15 ноября 2009

столбцы в сетке данных не имеют текста данных, так как они никогда не добавляются в визуальное дерево. звучит немного странно, но взгляните на блог vinces , в котором есть хороший пример визуального оформления. как только сетка нарисована, ячейки имеют контекст данных, и вы можете установить в них источник элементов комбинированных блоков, используя обычные привязки (не статические ресурсы ..)

вы можете получить доступ к источнику элементов комбинированного списка, как таковой

   <dg:DataGridComboBoxColumn>
      <dg:DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
        </Style>
      </dg:DataGridComboBoxColumn.EditingElementStyle>
   </dg:DataGridComboBoxColumn>

посмотрите здесь , а также здесь для некоторого кода

2 голосов
/ 09 сентября 2013

Вместо использования DataGridTextColumns вместо этого используется DataGridComboBoxColumn. Затем данные заполняются с использованием ItemsSource, который в приведенном ниже примере указывает на внешнее перечисление в статическом ресурсе, и, наконец, один связывает результат с целевым объектом, который будет содержать выбор пользователя в SelectedItemBinding.

<DataGrid.Columns>

<DataGridComboBoxColumn Header="MySelections"  
                        SelectedItemBinding="{Binding MySelectionsProperty}" 
                        ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>

См. Полный пример на MSDN в DataGridComboBoxColumn Class

...