【发布时间】:2014-11-30 01:20:44
【问题描述】:
我对我的数据网格如何更新感到困惑。
我有一个如下定义的数据网格:
<DataGrid ItemsSource="{Binding Customers}" Style="{StaticResource DataGridDemoRowStyle}" x:Name="grid"/>
c Customers 对象是在我的视图模型中找到的 ICollectionView。
在我的视图模型中,我像这样填充网格:
public ICollectionView Customers { get; private set; }
var _customers = new List<Customer>
{
new Customer
{
FirstName = "Christian",
LastName = "Moser",
Gender = Gender.Male,
WebSite = new Uri("http://www.wpftutorial.net"),
ReceiveNewsletter = true,
Image = "Images/christian.jpg"
},
new Customer
{
FirstName = "Peter",
LastName = "Meyer",
Gender = Gender.Male,
WebSite = new Uri("http://www.petermeyer.com"),
Image = "Images/peter.jpg"
},
new Customer
{
FirstName = "Lisa",
LastName = "Simpson",
Gender = Gender.Female,
WebSite = new Uri("http://www.thesimpsons.com"),
Image = "Images/lisa.jpg"
},
new Customer
{
FirstName = "Betty",
LastName = "Bossy",
Gender = Gender.Female,
WebSite = new Uri("http://www.bettybossy.ch"),
Image = "Images/betty.jpg"
},
};
Customers = CollectionViewSource.GetDefaultView(_customers);
这按预期工作。然后我决定在网格不会更新的假设下尝试添加到集合中,但确实如此:
List<Customer> i = Customers.SourceCollection;
i.Add(new Customer() { FirstName = "Bobby" });
我的问题是,这是如何更新网格的?我没有在 ICollectionView 上调用 Refresh 方法。我只能假设 INotifyCollectionChanged 事件在某个时候被 ICollectionView 调用。
我的模型确实实现了 INotifyPropertyChanged,但我看不出这将如何更新网格以添加新项目,仅更新当前项目。
【问题讨论】:
标签: c# wpf binding datagrid uicollectionview