我有一个名为Person的类和一个名为People的列表,如下所示:
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public List<Person> People;
public MainWindow()
{
InitializeComponent();
People = new List<Person>();
People.Add(new Person() { ID = 1, Name = "John" });
People.Add(new Person() { ID = 2, Name = "Mike" });
}
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
}
我想在DataGrid中显示2人参与者,使用组合框在2人之间进行选择。
<DataGrid x:Name="dataGrid1" Height="300">
<DataGridComboBoxColumn Header="Name" DisplayMemberPath="Name" SelectedItemBinding="{Binding Path=Name}">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=People}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=People}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
</DataGrid>
但DataGrid根本没有显示任何内容。问题是什么?
答案 0 :(得分:0)
不应该在<DataGrid.Columns>
标签内吗?
答案 1 :(得分:0)
People
必须是属性,而不是字段。People
,或,您必须用ObservableCollection<Person>
替换列表,以便网格检测到你添加的项目。People
,或之前指定InitializeComponent()
包含该属性的类必须实现INotifyPropertyChanged
并触发分配PropertyChanged
时People
,以便网格检测新集合。<DataGrid.Columns>
标记共同包围。