我使用Binding IsAsync屬性來保持UI響應並從屬性的get訪問器中加載數據,並且在使用MVVM時證明是一個很好的選項。這種方法非常好,不需要任何手動代碼來進行異步操作。有幾個例子,我的數據加載需要幾秒鐘,在這段時間內,很難區分「無數據」和「數據加載」。是否有一個屬性可以檢測綁定「IsBusy」或「Loading」的狀態,以便我可以顯示一些消息,指出加載操作未完成?WPF綁定isAsync獲取狀態
任何幫助表示讚賞。
我使用Binding IsAsync屬性來保持UI響應並從屬性的get訪問器中加載數據,並且在使用MVVM時證明是一個很好的選項。這種方法非常好,不需要任何手動代碼來進行異步操作。有幾個例子,我的數據加載需要幾秒鐘,在這段時間內,很難區分「無數據」和「數據加載」。是否有一個屬性可以檢測綁定「IsBusy」或「Loading」的狀態,以便我可以顯示一些消息,指出加載操作未完成?WPF綁定isAsync獲取狀態
任何幫助表示讚賞。
我知道,它是一個古老的線程。但是,如果有人仍有意...
你可以使用PriorityBinding,有一個華麗的這篇文章中解釋例如: http://www.switchonthecode.com/tutorials/wpf-tutorial-priority-bindings
的想法是一個規定其PriorityBinding又定義了幾種常規綁定這樣:
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Text>
<PriorityBinding>
<Binding ElementName="MainWindow" Path="Slow" IsAsync="True" />
<Binding ElementName="MainWindow" Path="Fast" />
</PriorityBinding>
</TextBlock.Text>
</TextBlock>
綁定順序決定優先級,優先級最高。在這種情況下,快速綁定(最低優先級)將立即填充textblock,因爲根據當時正在發生的情況,您可能會綁定到字符串屬性「Loading ...」或「Sorting ...」,並且存在沒有延遲。
但後來當緩慢的異步綁定屬性返回一個值時,它的優先級越高意味着它將接管,因爲它在列表中較早,並且它的結果將被綁定,顯示實際結果。
如果你需要填充一個進度彈出窗口,你可以在你的ViewModel的綁定屬性的getter中實現它,儘管我還沒有嘗試過這樣的東西。
謝謝Will ...試圖找到一種方法,通過viewmodel和/或xaml將其綁定到「等待」彈出窗口..爲WPF-MVVM應用程序模型提供了極大的簡便性。然而..看起來像沒有簡單的方法來實現這一點。 – Bhuvan 2010-12-20 02:13:11
@Bhuvan:你也可以有一個公開的枚舉屬性,公開了虛擬機的當前狀態...已初始化,加載,就緒。然後,您可以將其綁定到UI中,並在這些狀態期間向用戶展示您想要的任何內容...... – Will 2011-07-22 11:22:01