C# WPF DataGridComboxColumn不工作
我有一个名为Person的类和一个名为People的列表,如下所示:C# WPF DataGridComboxColumn不工作,c#,wpf,datagrid,datagridcomboboxcolumn,C#,Wpf,Datagrid,Datagridcomboboxcolumn,我有一个名为Person的类和一个名为People的列表,如下所示: namespace WpfApplication1 { public partial class MainWindow : Window { public List<Person> People; public MainWindow() { InitializeComponent(); 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根本不显示任何内容。有什么问题吗?它不应该在标签内吗
人必须是财产,而不是田地。
您必须先填充集合,然后再将其分配给人员,或者必须用ObservableCollection替换列表,以便网格将检测您添加的项。
必须在调用InitializeComponent之前分配人员,或者包含属性的类必须实现INotifyPropertyChanged,并在分配人员时激发PropertyChanged,以便网格检测新集合。
正如@Koen所指出的,您的列定义必须由一个标记共同包围。
它确实提供了部分答案,因为作者的代码在包装列定义之前无法工作,但还有其他问题。