绑定不更新实体框架4中的DataGrid

时间:2011-05-25 16:03:03

标签: c# wpf data-binding datagrid

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

4 个答案:

答案 0 :(得分:2)

您没有看到更新,因为ObservableCollection<T>在构建期间从实体集中获取了一次这些值。对实体集的所有其他更改都不会“被观察”。

只有拨打ObservableCollection<T>.Add(等)才会生成CollectionChanged个事件。

答案 1 :(得分:1)

正如sixlettervariables所说,您使用的构造函数将获取您的context.EntitySet值并将它们全部添加到新的ObservableCollection中。添加你的context.EntitySet不会添加到重复的项目列表。

您能说明您的EntitySet是如何定义的吗?是否有可能使它成为ObservableCollection并直接绑定到它?

答案 2 :(得分:0)

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

如果您直接绑定到数据上下文,我相信后一个选项是您最好的选择。 就个人而言,我会回避这一点,因为您的表示层直接与您的数据层交谈。您应该在(业务层)之间建立一个go,用于处理向UI绑定集合添加实体和分离持久性。

答案 3 :(得分:0)

好吧可以;)数据网格应该如何知道您在上下文中添加项目?如果您将项目添加到可观察集合中,则会通知数据网格。

因此,如果您添加项目执行上下文,只需为您的集合属性调用OnPropertyChanged(“YourEntityCollectionPropertyHere”)。