0

Silverlight WCF RIA Domain Services を使い始めたのですが、1 つ質問があります。

これまでのところ、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());

しかし、うまくいきませんでした。

すべてが順調に進んでいますが、この疑問はまだ頭に残っています...

どうもありがとう!

4

1 に答える 1

1

DomainContext.LoadSilverlight の他の Web 呼び出しと同様に非同期であるため、コールバックまたはイベント ハンドラーを介して結果を取得します。例:

コールバックを介して、 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);

イベント ハンドラーを介して、 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
  };

最初の方法をお勧めします。

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

于 2011-12-25T08:08:17.870 に答える