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