Как напрямую получить объект из Silverlight WCF RIA Domain Services - PullRequest
0 голосов
/ 25 декабря 2011

Я начинаю использовать доменные службы Silverlight WCF RIA, и у меня есть один вопрос.

До сих пор мне удавалось заполнять DataGrid данными, поступающими из моего WCF.Это нормально.

Но я бы хотел просто получить список, скажем, всех моих пользователей.Обычно с DataGrid я бы делал:

CortexDomainContext oContext = new CortexDomainContext();

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

Но если я только хочу получить список результатов, как мне это сделать?!

Я пытался:

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

Но это не сработало.

Все работает хорошо, но этот вопрос все еще остается в моей памяти ...

Большое спасибо!

1 Ответ

1 голос
/ 25 декабря 2011

DomainContext.Load является асинхронным, как и любой другой веб-вызов в Silverlight, поэтому вы получаете результаты либо с помощью обратного вызова, либо с помощью обработчика событий. Примеры:

с помощью обратного вызова, см. 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 для отслеживания изменений набора сущностей.

...