WPF - 带有 DataGridComboBoxColumn 的示例

14

我有一个包含2列的数据表格。一列包含角色信息,另一列应该有一个下拉框,其中包含可用用户列表。下拉框中的数据与第一列中的数据无关。

问题在于下拉框没有数据上下文,只有项源,而且似乎也不能使用绑定。

有什么方法可以在数据表格和下拉框中使用两个不同的数据集?


@UnkownCoder,带有“能否指点我”这样的短语的问题可能会被认为是不相关的(请参见相关主题)。 - Sinatr
2个回答

8
数据网格中的列没有数据上下文,因为它们从未添加到可视树中。听起来有点奇怪,但是请查看vinces blog,它有一个很好的视觉布局示例。一旦网格被绘制,单元格就有了数据上下文,并且可以使用普通绑定(而不是静态资源)在其中设置组合框项目源。
您可以这样访问组合框项目源。
   <dg:DataGridComboBoxColumn>
      <dg:DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
        </Style>
      </dg:DataGridComboBoxColumn.EditingElementStyle>
   </dg:DataGridComboBoxColumn>

在这里查看,还有这里一些代码


你需要对ElementStyle属性做同样的操作,参见这里:https://tech-disasters.blogspot.com/2016/10/mvvm-datagridcomboboxcolumn-binding.html - ice1e0

4

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

<DataGrid.Columns>

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

请查看MSDN的完整示例:DataGridComboBoxColumn Class

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接