Wpf &引用;ComboBoxItem的内联集合;在DataGridComboxColumn列中

Wpf &引用;ComboBoxItem的内联集合;在DataGridComboxColumn列中,wpf,xaml,datagrid,Wpf,Xaml,Datagrid,说: 要填充下拉列表,请首先为设置ItemsSource属性 通过使用以下选项之一来创建组合框: 静态资源。有关更多信息,请参见StaticResource标记扩展 一个x:静态代码实体。有关详细信息,请参见x:静态标记扩展 ComboBoxItem类型的内联集合 使用“ComboBoxItem类型的内联集合”,我想到了类似这样的事情: <DataGrid> <DataGrid.Columns> <DataGridComboBoxColumn>

说:

要填充下拉列表,请首先为设置ItemsSource属性 通过使用以下选项之一来创建组合框:

  • 静态资源。有关更多信息,请参见StaticResource标记扩展
  • 一个x:静态代码实体。有关详细信息,请参见x:静态标记扩展
  • ComboBoxItem类型的内联集合
使用“ComboBoxItem类型的内联集合”,我想到了类似这样的事情:

<DataGrid>
  <DataGrid.Columns>
    <DataGridComboBoxColumn>
      <ComboBoxItem Content="None" Tag="0" />
      <ComboBoxItem Content="Few" Tag="1" />
      <ComboBoxItem Content="Some" Tag="2" />
      <ComboBoxItem Content="Enough" Tag="3" />
      <ComboBoxItem Content="Lots" Tag="4" />
      <ComboBoxItem Content="Too much" Tag="5" />
    </DataGridComboBoxColumn>
 </DataGrid.Columns>
</DataGrid>


但它不起作用。我知道另一种填充DataGridComboBoxColumn的方法,但我对此很好奇,因为我在研究中没有发现这方面的内容。。。“ComboBoxItem类型的内联集合”是什么意思?

这里的关键是
DataGridComboxColumn
不是一个
ComboxItem类型,引用的文档片段不适用

我认为,无法在列定义中添加
ComboBoxItem
元素的原因是,它会多次将它们添加到可视化树中(在填充每个
ComboBoxItem
时,这些项将被“重用”而不是克隆)

但据我所知,
datagridcomboxcolumn
只是一个列定义,它公开了一些
ComboBox
属性,默认情况下显示为
ComboBox
。我的观点是,它没有用
DataGridTemplateColumn
无法实现的额外功能

这里有一个备选方案可以让您开始:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox>
                        <ComboBoxItem Content="None" Tag="0" />
                        <ComboBoxItem Content="Few" Tag="1" />
                        <ComboBoxItem Content="Some" Tag="2" />
                        <ComboBoxItem Content="Enough" Tag="3" />
                        <ComboBoxItem Content="Lots" Tag="4" />
                        <ComboBoxItem Content="Too much" Tag="5" />
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

与前面的场景不同,这次它可以工作,因为
ComboBoxItem
元素是在
DataTemplate
中定义的,这意味着XAML处理器实际上将它们转换为
FrameworkElementFactory
对象,反过来,它们能够根据需要生成模板化的
ComboBoxItem
元素