[英]Silverlight- WCF RIA Services - DataForm + Overriding Add Operation
[英]Silverlights Dataform with MVVM and WCF Ria Services
晚上好,
我正在尋找可以幫助我理解如何使用WCF Ria Services將Silverlight DataForm與ViewModel合並的人。 我要完成的工作是使用DataForm管理我的實體集合,並利用其內置的導航,添加,編輯和刪除功能。 但是,我很難將其與ViewModel和Ria Services捆綁在一起。
據我了解,DataForm需要綁定到ObservableCollection<T>
。 但是,當我從WCF Ria服務上下文查詢時。 即。
_context.Load(_context.GetAllCustomersQuery(), loadCustomersQueryCallback, true);
我將在回調方法中收到IQueryable,我將其像這樣轉換為ObservableCollection<T>
?
Customers = new ObservableCollection<Customer>(_context.Customers);
客戶是我的ViewModel中的財產,例如...
public ObservableCollection<Customer> Customers
{
get { return _customers; }
set
{
if (_customers != value)
{
_customers = value;
OnPropertyChanged("Customers");
}
}
}
DataForm綁定到ViewModel的Customers屬性,我可以從數據源中查看數據,可以在實體之間導航,可以編輯現有實體並將更改保存回數據庫,但是無法添加或刪除實體。
我對“客戶”屬性的處理正確嗎? 我是否通過轉換為新的ObservableCollection與上下文“斷開連接”,因此實際上沒有從上下文中添加或刪除實體?
任何幫助是極大的贊賞。
問候,
我認為您在上一個問題中碰到了這個問題。 創建新的ObservableCollection時,您已與集合更改跟蹤(添加和刪除)斷開連接。 除了使用OC之外,還有許多其他選項值得考慮。 在您的情況下,看起來EntitySet或EntityList可能是最佳選擇。 有關這些類型的完整介紹,請參閱我在RIA Services SP1中有關集合綁定的文章。
您可以使用:
Customers.Clear(); // Or dispose every customer if it is Disposable
Customers = new ObservableCollection(result.ToList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.