获取WPF Listview以使用数据绑定显示ObservableCollection

我有一个类型为Project的可观察集合,我希望在ListView中显示但是没有添加到我的ListView中,我真的不明白

我的MainWindow.xaml

          

我的MainWindow.cs

  public partial class MainWindow : Window { ObservableCollection Projects = new ObservableCollection(); ObservableCollection Employees = new ObservableCollection(); public MainWindow() { InitializeComponent(); DataContext = Projects; Project pro1 = new Project(1, "Swordfish"); Projects.Add(pro1); Employee empMads = new Employee("Mads", 1); Employee empBrian = new Employee("Brian", 2); Employees.Add(empMads); Employees.Add(empBrian); } private void ListViewProjectsSelectionChanged(object sender, SelectionChangedEventArgs e) { } } 

和我的Project.cs这是类文件

 [Serializable] class Project : INotifyPropertyChanged { public Project(int id, string name) { ID = id; Name = name; } private int id; public int ID { get { return id; } set { id = value; NotifyPropertyChanged("ProjectID"); } } private string name; public string Name { get { return name; } set { name = value; NotifyPropertyChanged("ProjectName"); } } [field: NonSerialized] public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } } 

但是没有任何内容添加到我的列表中我无法看到我错过了它的工作。

我有它作为observablecollection我做DataContext =集合我在xaml文件中绑定

编辑代码部分1:

  public ObservableCollection Projects { get; set; } public ObservableCollection Employees { get; set; } public MainWindow() { InitializeComponent(); Projects = new ObservableCollection(); Employees = new ObservableCollection(); DataContext = Projects; 

这是因为您使用类似ProjectID绑定路径,而您的Project类具有属性IDProjectNameName属性也是如此。

E:当你遇到绑定问题时,在visual studio的调试模式下查看Output选项卡非常有用,看看从数据绑定引擎返回了什么错误。 这些exception通常不会返回给用户,但您可以在那里检查它们。

正如所指出的,这里存在一些问题。 让你成为新的WPF开发人员的一个“难题”是你不能使用成员变量,你必须使用公共属性:

 public ObservableCollection Projects { get; set; } public ObservableCollection Employees { get; set; } 

当然,这些需要在构造函数中初始化。

完成后,您需要确保集合的属性与ListView上绑定的属性相匹配。

默认情况下,您的成员变量将是私有的。 如果您在此处发布的是您的实际代码,则XAML无法访问它。 公开这些属性:

 public ObservableCollection Projects = new ObservableCollection(); public ObservableCollection Employees = new ObservableCollection(); 

1.你的列表需要是一个公共属性(编辑:除非你像你一样设置DataContext …)( public ObservableCollection Projects {get;}

2.您的通知应与实际的属性名称相同:

 private int id; public int ID { get { return id; } set { id = value; NotifyPropertyChanged("ID"); } } 

3.绑定也需要这样:

  

我认为…