2011-12-25 9 views
0

Silverlight WCF RIAドメインサービスを使用し始めていますが、私には1つの質問があります。Silverlight WCF RIAドメインサービスからオブジェクトを直接取得する方法

これまでのところ、私はWCFからのデータをDataGridに書き込むことができました。これは大丈夫です。

しかし、私は単純に、すべての私のユーザーのリストを取得したいと思います。通常はDataGridを使用します:

CortexDomainContext oContext = new CortexDomainContext(); 

this.dataGrid1.ItemsSource = oContext.Users; 
oContext.Load(oContext.GetUsersQuery()); 

しかし、結果のリストしか取得しない場合は、どうすればいいですか?

は、私が試した:

List<User> oUsers = oContext.Users.ToList(); 
oContext.Load(oContext.GetUsersQuery()); 

しかし、それは働いていませんでした。 ...

おかげで多くのことを

すべてが大丈夫働いているが、この質問にはまだ私の心に残っています!

+0

「しかし、うまくいかなかった」 - より具体的には.... –

+0

これは、私のリストには全くのユーザーがいませんでした。それが働かなかった理由です。リストは空のままだった。 – TomShreds

+0

とデバッガでステップスルーすると、リストに何かが含まれていますか? –

答えて

1

DomainContext.Loadは、Silverlightの他のWeb呼び出しと同じように非同期です。そのため、結果はコールバックまたはイベントハンドラを介して取得されます。例:コールバックを経由して

、私は最初の方法をお勧めしますhttp://msdn.microsoft.com/en-us/library/ff422589(v=VS.91).aspx

var operation = oContext.Load(oContext.GetUsersQuery()); 
operation.Completed += (s, e) => 
    { 
    var users = operation.Entities; // your users are here 
    }; 

を参照して、イベントハンドラを経由してhttp://msdn.microsoft.com/en-us/library/ff422945(v=vs.91).aspx

oContext.Load(oContext.GetUsersQuery(), operation => 
    { 
    var users = operation.Entities; // here you are 
    }, null); 

を参照してください。

INotifyCollectionChangedを実装するエンティティセットにバインドする、つまりエンティティがエンティティセットに追加または削除されたときにサブスクライバに通知するため、DataGridはそれなしで機能します。 DataGrid(実際にはItemsControl)は、INotifyCollectionChanged.CollectionChangedイベントにサブスクライブし、エンティティセットの変更を追跡します。

+0

これはまさに私が探していたものです!どうもありがとう! – TomShreds

関連する問題