我有一个 Project 类型的可观察集合,我想将其显示在 ListView 中,但我真的不明白没有向我的 ListView 添加任何内容
我的主窗口.xaml
<ListView Name="ListViewProjects" Grid.Column="0" Grid.RowSpan="3" SelectionChanged="ListViewProjectsSelectionChanged" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" MinWidth="100">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Path=ProjectID}"/>
<TextBlock Text="{Binding Path=ProjectName}"/>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我的主窗口.cs
public partial class MainWindow : Window
{
ObservableCollection<Project> Projects = new ObservableCollection<Project>();
ObservableCollection<Employee> Employees = new ObservableCollection<Employee>();
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));
}
}
}
但我的列表中没有添加任何内容,我看不出我缺少什么才能正常工作。
我把它作为一个可观察的集合 我做 DataContext = 集合 我在 xaml 文件中进行绑定(bind)
编辑代码部分 1:
public ObservableCollection<Project> Projects { get; set; }
public ObservableCollection<Employee> Employees { get; set; }
public MainWindow()
{
InitializeComponent();
Projects = new ObservableCollection<Project>();
Employees = new ObservableCollection<Employee>();
DataContext = Projects;
最佳答案
这是因为您使用像 ProjectID
这样的绑定(bind)路径,而您的 Project 类具有属性 ID
。 ProjectName
和 Name
属性也是如此。
E:
当您遇到绑定(bind)问题时,在 visual studio 的 Debug模式下查看 Output
选项卡以查看从数据绑定(bind)引擎返回了哪些错误非常有用。这些异常通常不会返回给用户,但您可以在那里检查它们。
关于c# - 使用数据绑定(bind)获取 WPF Listview 以显示 ObservableCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680653/