【问题标题】:WPF - example with DataGridComboBoxColumnWPF - DataGridComboBoxColumn 示例
【发布时间】:2010-12-15 23:57:00
【问题描述】:

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

组合框没有数据上下文,只有一个项目源,而且我似乎也无法使用绑定,这让我感到很困惑。

一个表格和组合框中的数据使用两个不同的数据集的方法是什么?

【问题讨论】:

  • @UnkownCoder,带有“can some point me to”等短语的问题可能会被识别为离题(请参阅on-topic)。

标签: wpf datagridcomboboxcolumn


【解决方案1】:

数据网格中的列没有数据上下文,因为它们从未添加到可视化树中。听起来有点奇怪,但看看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 的一些代码

【讨论】:

【解决方案2】:

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

<DataGrid.Columns>

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

在 DataGridComboBoxColumn Class 上查看 MSDN 上的完整示例

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 2011-08-03
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多