这是代码背后的一个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>();