2011-12-25 71 views
0

我開始使用Silverlight的WCF RIA域服務,我有一個問題。如何直接從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()); 

但它並沒有奏效。

一切工作正常的,但這個問題仍停留在我的腦海裏......

非常感謝!

+0

「但它沒有奏效。」 - 更具體一些.... – 2011-12-25 06:21:28

+0

它沒有填補我的名單與任何用戶。這就是爲什麼它沒有奏效。該清單保持空白。 – TomShreds 2011-12-25 06:27:15

+0

並且當您在調試器中逐步完成時,列表是否包含任何內容? – 2011-12-25 06:29:51

回答

1

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跟蹤EntitySet的修改。

+0

這完全是我在找的東西!非常感謝! – TomShreds 2011-12-25 15:32:22