Вопрос

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

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

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

Это было полезно?

Решение

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

вы можете получить доступ к источнику элементов поля со списком как таковому

   <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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top