1

こんばんは、

Silverlight DataForm を WCF Ria Services を使用する ViewModel に組み込む方法を理解するのを手伝ってくれる人を探しています。私が達成しようとしているのは、DataForm を使用してエンティティのコレクションを管理し、組み込みのナビゲーション、追加、編集、および削除機能を利用することです。ただし、ViewModel と Ria Services をすべて結び付けるのに問題があります。

私の理解では、DataForm は にバインドする必要がありますObservableCollection<T>。ただし、WCF Ria Service コンテキストからクエリを実行すると。すなわち。

_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 プロパティにバインドされており、データソースからデータを表示できます。エンティティ間を移動できます。既存のエンティティを編集して変更をデータベースに保持できますが、エンティティを追加または削除することはできません。 .

Customers プロパティで行っていることは正しいですか? 新しい ObservableCollection にキャストしてコンテキストから「切断」したため、コンテキストからエンティティを実際に追加または削除していませんか?

どんな助けでも大歓迎です。

よろしく、

4

2 に答える 2

3

前回の質問でその問題に気がついたと思います。新しい ObservableCollection を作成すると、コレクションの変更追跡 (追加と削除) から切断されます。OC を使用する代わりに、考慮に値するオプションが他にも多数あります。あなたの場合、EntitySet または EntityList が最適なオプションのようです。これらのタイプの完全な概要については、RIA Services SP1 でのコレクション バインディングに関する私の投稿をご覧ください。

于 2011-03-15T13:50:12.477 に答える
0

使用できます:

Customers.Clear(); // Or dispose every customer if it is Disposable
Customers = new ObservableCollection(result.ToList());
于 2011-03-15T13:51:10.610 に答える