我正在使用Entity Framework 4/WPF/C#。在XAML中,new ObservableCollection<Entity>(context.EntitySet)
被绑定到WPF DataGrid上,这个工作很好。但是当我以编程方式创建一个新的实体并将其添加到上下文中时,DataGrid保持不变。我应该怎么做才能使DataGrid更新呢?
我正在使用Entity Framework 4/WPF/C#。在XAML中,new ObservableCollection<Entity>(context.EntitySet)
被绑定到WPF DataGrid上,这个工作很好。但是当我以编程方式创建一个新的实体并将其添加到上下文中时,DataGrid保持不变。我应该怎么做才能使DataGrid更新呢?
您看不到更新是因为ObservableCollection<T>
在构造时从实体集获取这些值。实体集的所有其他更改都不会被“观察”。
只有对ObservableCollection<T>.Add
(等等)的调用会生成CollectionChanged
事件。
我没有看到提到Silverlight,所以我猜你没有使用RIA服务。 你是如何将对象添加到上下文中的? .AddTo{EntitySetName]() 或者 .{EntitySetNme}.Add()
如果您直接绑定数据上下文,我认为后者是最好的选择。 个人而言,我会避免这样做,因为您的表示层直接与数据层通信。您应该建立一个中间层(业务层),它单独处理将实体添加到UI绑定集合和持久性。
没问题的;) 数据表格怎么知道你添加了一个项目到你的上下文中呢?数据表格只会在你的可观察集合中添加一个项目时被通知。
所以,如果你将项目添加到你的上下文中,只需为你的集合属性调用OnPropertyChanged("YourEntityCollectionPropertyHere")。