将DataGridComboBoxColumn绑定到对象

时间:2020-06-08 14:40:28

标签: c# wpf combobox datagrid datagridcomboboxcolumn

我试图将Combobox绑定到数据网格中的对象,但收效甚微。

Object.cs:

public class Object {

public static IEnumerable<string> Colors => new List<string> {"Red", "Green", "Blue"}

}

public string Color {
get => color;
set => color = value;
}

private string Color;

我的ViewModel包含这些模型的集合,我将其称为Objects

XAML文件:

<DataGrid Name="DataGrid" ItemsSource={Binding Objects}" Style={StaticResource DataGridStyle}">
    <DataGrid.Columns>
        <DataGridComboBoxColumn Header="Test" SelectedValueBinding="{Binding Color, StringFormat=F3, Mode=TwoWay}" ItemsSource="{Binding Colors}"/>
    <DataGrid.Columns/>
<DataGrid/>

有人知道我在做什么错吗?现在,我看到的是ComboBox应该存在的空白区域。我尝试过以下尝试但未成功的事情,我怀疑这可能是问题所在:

  • 我的Color列表应该在对象本身还是在ViewModel中?我已经尝试过两者,并且还尝试过将属性设为静态。
  • 添加DataGridComboBoxColumn.ElementStyleDataGridComboBoxColumn.EditingElementStyle

1 个答案:

答案 0 :(得分:2)

这应该有效:

<DataGridComboBoxColumn Header="Test"
                        SelectedValueBinding="{Binding Color, StringFormat=F3, Mode=TwoWay}" 
                        ItemsSource="{x:Static local:Object.Colors}"/>

local映射到定义Object的名称空间:

xmlns:local="clr-namespace:WpfApp1"
相关问题