将 DataGridComboBoxColumn 绑定到对象
Binding DataGridComboBoxColumn to Object
我试图将组合框绑定到数据网格中的对象,但收效甚微。
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 应该所在的空白 space。我已经尝试了以下没有成功的事情,我怀疑可能是问题所在:
- 我的
Color
列表应该在对象本身还是我的 ViewModel 中?我都试过了,我也试过使 属性 静态。
- 添加
DataGridComboBoxColumn.ElementStyle
和 DataGridComboBoxColumn.EditingElementStyle
这应该有效:
<DataGridComboBoxColumn Header="Test"
SelectedValueBinding="{Binding Color, StringFormat=F3, Mode=TwoWay}"
ItemsSource="{x:Static local:Object.Colors}"/>
local
映射到定义了 Object
的命名空间:
xmlns:local="clr-namespace:WpfApp1"
我试图将组合框绑定到数据网格中的对象,但收效甚微。
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 应该所在的空白 space。我已经尝试了以下没有成功的事情,我怀疑可能是问题所在:
- 我的
Color
列表应该在对象本身还是我的 ViewModel 中?我都试过了,我也试过使 属性 静态。 - 添加
DataGridComboBoxColumn.ElementStyle
和DataGridComboBoxColumn.EditingElementStyle
这应该有效:
<DataGridComboBoxColumn Header="Test"
SelectedValueBinding="{Binding Color, StringFormat=F3, Mode=TwoWay}"
ItemsSource="{x:Static local:Object.Colors}"/>
local
映射到定义了 Object
的命名空间:
xmlns:local="clr-namespace:WpfApp1"