Entity Framework 4中DataGrid的绑定未更新

3

我正在使用Entity Framework 4/WPF/C#。在XAML中,new ObservableCollection<Entity>(context.EntitySet)被绑定到WPF DataGrid上,这个工作很好。但是当我以编程方式创建一个新的实体并将其添加到上下文中时,DataGrid保持不变。我应该怎么做才能使DataGrid更新呢?


1
你能展示一下绑定的XAML和数据上下文对象的代码吗? - user7116
4个回答

2

您看不到更新是因为ObservableCollection<T>在构造时从实体集获取这些值。实体集的所有其他更改都不会被“观察”。

只有对ObservableCollection<T>.Add(等等)的调用会生成CollectionChanged事件。


1
正如sixlettervariables所说,您使用的构造函数会将您的context.EntitySet值添加到新的ObservableCollection中。将其添加到context.EntitySet并不会将其添加到重复项列表中。
您能展示一下您的EntitySet是如何定义的吗?是否可能将其定义为ObservableCollection并直接进行绑定?

0

我没有看到提到Silverlight,所以我猜你没有使用RIA服务。 你是如何将对象添加到上下文中的? .AddTo{EntitySetName]() 或者 .{EntitySetNme}.Add()

如果您直接绑定数据上下文,我认为后者是最好的选择。 个人而言,我会避免这样做,因为您的表示层直接与数据层通信。您应该建立一个中间层(业务层),它单独处理将实体添加到UI绑定集合和持久性。


我正在绑定到ObservableCollection(context.EntitySet)。我的新实体已经正确地在上下文中,但是DataGrid没有更新。我正在使用MVVM模式。 - Cartesius00

0

没问题的;) 数据表格怎么知道你添加了一个项目到你的上下文中呢?数据表格只会在你的可观察集合中添加一个项目时被通知。

所以,如果你将项目添加到你的上下文中,只需为你的集合属性调用OnPropertyChanged("YourEntityCollectionPropertyHere")。


听起来不错,但是不起作用。我将实体添加到上下文中,在它上面的ObservableCollection中没有做任何事情,然后调用了PropertyChanged("MyObservableCollection"),但什么也没发生。请问,你还有其他想法吗??? - Cartesius00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接