Car*_*s00 5 .net c# data-binding wpf entity-framework
为什么它更好(在WPF,C#,实体框架)绑定ListBox
到ObservableCollection
时创建的ObjectSet
(从实体框架),而不是结合ObjectSet
直接?
还有一个问题:
当我绑定ListBox
时ObservableCollection
,对集合的任何添加都会更新ListBox
.大.但是(在实体框架中)ObservableCollection
创建ObjectContext
并向集合添加新项目不会将项目添加到上下文...如何解决这个问题????
Sla*_*uma 15
(请注意"另外一个问题")
Entity Framework 4.1提供了一个新功能,它在WPF应用程序中特别有用 - 对象上下文的本地视图.它可以通过Local
财产获得DbSet<T>
.Local
返回ObservableCollection<T>
包含T
当前附加到上下文(而不是状态Deleted
)的所有类型实体.
Local
很有用,因为它会自动与对象上下文保持同步.例如:您可以运行查询以将对象加载到上下文中...
dbContext.Customers.Where(c => c.Country == "Alice's Wonderland").Load();
Run Code Online (Sandbox Code Playgroud)
...然后将上下文中的对象公开为ObservableCollection
......
ObservableCollection<Customer> items = dbContext.Customers.Local;
Run Code Online (Sandbox Code Playgroud)
...并将其用作ItemsSource
某些WPF ItemsControl.在此集合中添加或删除对象时...
items.Add(newCustomer);
items.Remove(oldCustomer);
Run Code Online (Sandbox Code Playgroud)
...它们会自动添加到EF环境中/从中删除.调用SaveChanges
将在数据库中插入/删除对象.
同样在上下文中添加或删除对象......
dbContext.Customers.Add(newCustomer);
dbContext.Customers.Remove(oldCustomer);
Run Code Online (Sandbox Code Playgroud)
...自动更新Local
集合并激发WPF绑定引擎更新UI的通知.
以下是Local
EF 4.1 的概述.
ObservableCollection实现INotifyPropertyChanged
以及INotifyCollectionChanged
WPF用于将元素重新绑定到UI的两个实现.因此,您可以向ObservableCollection添加一个项目,并立即更新UI,而不会与您进行代码交互.ObjectSet
既不实现,也不实现此功能.
归档时间: |
|
查看次数: |
4230 次 |
最近记录: |