将Listview绑定到ObservableCollection对象(来自XAML)



这是代码背后的一个People(ObservableCollection(对象数组。

private ObservableCollection<People> data = new ObservableCollection<People>();
public SecondWindow()
{
InitializeComponent();
data.Add(new People() { Name = "JOhn Doe", Age="34" });
data.Add(new People() { Name = "Jane Doe", Age = "45" });
data.Add(new People() { Name = "Peter Singh", Age = "26" });
this.DataContext = this;
}

public class People : INotifyPropertyChanged
{
private String name, age;
public String Name
{
get { return this.name; }
set
{
if (this.name != value)
{
this.name = value;
this.NotifyPropertyChanged("Name");
}
}
}
public String Age
{
get { return this.age; }
set
{
if (this.age != value)
{
this.age = value;
this.NotifyPropertyChanged("Age");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(String prop)
{
if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}

这是XAML代码,但它不绑定

<BlockUIContainer>
<ListView BorderThickness="0" 
ItemsSource="{Binding Path=data}">
<ListView.View>
<GridView>
<GridViewColumn 
Header="Name" 
DisplayMemberBinding="{Binding Name}" 
Width="150" />
<GridViewColumn 
Header="Age" 
DisplayMemberBinding="{Binding Age}" 
Width="75" />
</GridView>
</ListView.View>
</ListView>
</BlockUIContainer>

有什么想法吗?

问题来自于对data:使用字段而非公共属性

public ObservableCollection<People> data { get; } = new ObservableCollection<People>();

最新更新