簡體   English   中英

實體框架 4 中的 DataGrid 綁定未更新

[英]Binding not updating for DataGrid in Entity Framework 4

我正在使用實體框架 4/WPF/C#。 new ObservableCollection<Entity>(context.EntitySet)綁定到 XAML 中的 WPF DataGrid。 這工作正常。 但是當我以編程方式創建一個新實體並將其添加到上下文時,DataGrid 保持不變。 我應該怎么做才能讓 DataGrid 更新?

您看不到更新,因為ObservableCollection<T>在構造期間從實體集中獲取這些值一次。 對實體集的所有其他更改都不會“觀察到”。

只有調用ObservableCollection<T>.Add (et al) 會生成CollectionChanged事件。

正如 Sixlettervariables 所說,您正在使用的構造函數獲取您的 context.EntitySet 值並將它們全部添加到新的 ObservableCollection 中。 添加你的 context.EntitySet 不會添加到重復的項目列表中。

你能展示你的EntitySet是如何定義的嗎? 是否可以將其設為 ObservableCollection 並直接綁定到它?

我沒有看到提到的 silverlight 所以我猜你沒有使用 RIA 服務。 您如何將 object 添加到上下文中? .AddTo{EntitySetName]() 或 .{EntitySetNme}.Add()

如果您直接綁定到數據上下文,我相信后一種選擇是您最好的選擇。 就我個人而言,我會回避這一點,因為您的表示層直接與您的數據層對話。 您應該在(業務層)之間建立一個 go,分別處理將實體添加到 UI 綁定集合和持久性。

好吧,沒關系;)數據網格應該如何知道您將項目添加到上下文中? 如果您將一個項目添加到您的可觀察集合中,則只會通知數據網格。

因此,如果您將項目添加到您的上下文中,只需為您的集合屬性調用 OnPropertyChanged("YourEntityCollectionPropertyHere") 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM