簡體   English   中英

帶有MVVM和WCF Ria服務的Silverlights數據表單

[英]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.

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