WPF - DataGridComboBoxColumn的示例

时间:2009-11-12 17:51:57

标签: wpf datagridcomboboxcolumn

有时最简单的例子是最难找到的。 。 。

我有一个包含2列的数据网格。一列包含角色信息,另一列应包含一个包含可用用户列表的组合框。组合框中的数据与第一列中的数据无关。由于组合框没有datacontext,只有一个itemsource而我似乎也无法使用绑定这一事实,我被抛弃了。

有人可以指点一个简单的例子,它为表格和组合框中的数据使用两个不同的数据集吗?

2 个答案:

答案 0 :(得分:8)

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>

查看here以及here代码

答案 1 :(得分:2)

而不是使用DataGridTextColumns而是使用DataGridComboBoxColumn。然后使用ItemsSource填充数据,ItemsSource在下面的示例中指向静态资源中的外部枚举,最后一个将结果绑定到目标对象,该目标对象将保留SelectedItemBinding中的用户选择。

<DataGrid.Columns>

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

DataGridComboBoxColumn Class

上查看MSDN上的完整示例