2011-05-17 96 views
0

我有一個DataGrid,我加載了大量的行(幾百)。silverlight 4 datagrid busyindicator刷新大量的行

加載行的過程導致Datagrid在數據由控件「處理」時暫時爲空,然後幾秒鐘後控件完成其工作並按預期顯示行。

它的'幾秒鐘',我想向用戶顯示一個BusyIndi​​cator,否則他們看到一個未加載的DataGrid。我很希望能找到一些符合「加載」和「加載」等事件的事件,所以我並相應地開啓和關閉了指示器。

任何人都有這種情況的經驗嗎?

任何輸入非常感謝。

回答

1

我們正面臨着SL3的確切問題,並希望SL4會更好。 但是,正如您可能已經猜到的那樣,在此日期之前,Silverlight運行時無法解決這種情況。

我們採取了以下解決方法我們SL3/4 + WCF應用程序(我們不使用RIA服務注意):

1)wcfservice_LoadDataAsync()前 - 展會繁忙指示

2)LoadDataAsyncCompletedEvent - 如果arg.HasError()隱藏忙指標,否則不要隱藏忙指標。

3)Databind數據網格,然後隱藏繁忙指標。

這種在UI級別隱藏繁忙指示符的方法可以使繁忙指示符顯示一段較長的時間,從而減少空白屏幕顯示給用戶的時間。

此外,基於XAML的繁忙指標本身也引發了一些問題,因此我們最終實現了一個非常輕量級的基於HTML的繁忙指標,該指標將使用簡單的div覆蓋機制和動畫GIF來禁用所需的UI部分。

所有這些結合減少了空白屏幕顯示給用戶的時間。

我知道這不是一個100%的解決方案,但隨着Silverlight的最新版本甚至v5 Beta,仍然沒有一個RenderComplete事件可以幫助隱藏Busy指標。

希望它有幫助!