2010-02-20 56 views
0

我一直拼命嘗試大約上週來弄清楚我的斷開連接,無法繞過RIA服務。我仔細地按照the Microsoft tutorial video中顯示的示例進行了操作,但仍然遇到問題。這可能是因爲我試圖做一些你不能做的事情,但我很可能只是以錯誤的方式去做。Silverlight 3與RIA服務 - 空白結果集/負載完成

在本教程中,他們使用代碼非常相似:

IVCContext ctx = new IVCContext(); 
MyDataGrid.ItemsSource = ctx.ChairOptions; 
ctx.Load(ctx.GetChairOptionsQuery()); 

與它發現在ChairOptions表中的信息填充DataGrid中。

但我想要做的是直接訪問結果,而不必將它們綁定到DataGrid或任何其他控件。我想簡單地得到結果集,然後對其進行操作,但我請。

更具體地說,我想看看它在模型中附加的屬性(名稱,成本等)和關係(組,子組),以便我可以執行特殊操作並更改控制內容。但似乎不管我嘗試什麼,我都會得到一個空白的結果集。

我已經試過了諸如:

LocalContext ctx = new LocalContext(); 
var ResultSet = ctx.ChairOptions; 
ctx.Load(ctx.GetChairOptionsQuery()); 

但ResultSet是總是空的。

我覺得我無法弄清楚這一點的原因之一是因爲我似乎無法確定第2行的賦值中究竟發生了什麼,以及Load()函數實際上在做什麼在線#3。在第一個例子中,它只是自動運行,但我真的很想知道發生了什麼。

在此先感謝您的幫助或參考。


編輯:

它只是今天早上打我,我醒來的時候這個問題可能是什麼。儘管代碼使它看起來非常簡單和程序化,但Load調用實際上是異步的,對嗎?

如果這是正確的,那麼問題就變成了,我怎麼知道它何時完成,以便我可以對結果進行操作?


編輯:

多用這種新的見解搜索使我this bit of information有關將回調到單個加載操作。但是該鏈接中提供的類使用了一個名爲LoadOperation的對象,雖然看起來LoadOperation位於System.Windows.Ria命名空間中,但爲它添加using並不允許Visual Studio將對LoadOperation的引用識別爲對象,所以我不能在這個類中構建這個項目。

回答

0

This class基本上解決了這個問題。它允許您指定要在加載操作完成時執行的回調(以及允許您同時安排多個加載)。一旦回調被調用,我想要的數據就可以使用,並且我可以按照我的喜好對其進行操作。