我试图创建一个在
在我的小例子中,我创建了一个对象列表,其中包含两个
XAML代码如下所示:
或者这个(两个都不起作用):
如果我使用
我做错了什么?我需要实现
这个问题很容易回答,但了解机制也很棒。
List
和DataGrid
之间的绑定。我在网上没找到可用的解决方案,这很奇怪。在我的小例子中,我创建了一个对象列表,其中包含两个
public
属性:Age
和Name
。public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public ObservableCollection<Person> Collection { get; set; }
public List<Person> Persons { get; set; }
private void WindowLoaded(object sender, RoutedEventArgs e)
{
this.Persons = new List<Person>();
for (int i = 0; i != 35; i++)
{
this.Persons.Add(new Person() {Age = i, Name = i.ToString()});
}
this.Collection = new ObservableCollection<Person>(this.Persons);
}
XAML代码如下所示:
<Grid DataContext="{Binding ElementName=TestWindow, Path=.}">
<DataGrid x:Name="DataGrid" ItemsSource="{Binding Collection}" />
</Grid>
或者这个(两个都不起作用):
<Grid DataContext="{Binding ElementName=TestWindow, Path=.}">
<DataGrid x:Name="DataGrid" ItemsSource="{Binding Persons}" />
</Grid>
如果我使用
this.DataGrid.ItemsSource = this.Persons;
,我至少可以看到列表中的所有项目,但每次源List
更改时都必须执行this.DataGrid.Items.Refresh()
,这就是我提出问题的原因:我做错了什么?我需要实现
INotifyPropertyChanged
吗?这个问题很容易回答,但了解机制也很棒。