在WPF DataGrid的ComboBox列中显示一些静态值

4

我正在尝试使用一个DataGrid,其第一列是一个ComboxBox。这个ComboxBox有硬编码的静态值,可能的值为:Employee, Contractor, Supplier

如何在DataGrid中显示一些静态值,而不绑定到DataSource。 我对WPF还很陌生,更详细的解释会有所帮助。


当你说“标准网格”时,你的意思是什么? - Andrii Shvydkyi
我在哪里说标准网格了? - VNarasimhaM
2个回答

13

如果你指的是WPF Toolkit DataGrid,你可以这样做:

        <dg:DataGridComboBoxColumn 
           Header="String Column" 
           SelectedItemBinding="{Binding Path=RoleProperty}">
           <dg:DataGridComboBoxColumn.ItemsSource>
              <CompositeCollection>
                 <system:String>Employee</system:String>
                 <system:String>Contractor</system:String>
                 <system:String>Supplier</system:String>
              </CompositeCollection>
           </dg:DataGridComboBoxColumn.ItemsSource>
        </dg:DataGridComboBoxColumn>

在这个例子中,所显示的项都具有称为RoleProperty的属性。你还需要在XAML顶部添加一个XML命名空间定义(与其他命名空间一起,如:

   xmlns:system="clr-namespace:System;assembly=mscorlib"

让您包含系统命名空间。(以便访问字符串)


3
在我看来,<x:Array><CompositeCollection>更高效,而且更易读——大多数人不知道什么是CompositeCollection,更不用说它可以用这种方式了。使用数组是一个更清晰的选择。 - Ray Burns
非常好的想法Ray。我太快速地使用Intellisense编码了,然后Composite Collection首先出现了。 - Aran Mulholland
尝试了一下(大约两分钟),但无法在XAML中实例化数组,显示没有公共构造函数。 - Aran Mulholland

3
您可以使用标准ComboBox,并将您的静态值作为ComboBoxItems,如下所示:
<ComboBox>
  <ComboBoxItem>Employee</ComboBoxItem>
  <ComboBoxItem>Contractor</ComboBoxItem>
  <ComboBoxItem>Supplier</ComboBoxItem>
</ComboBox>

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