我正在編寫一個連接到網絡資源的應用程序。在MVVM中實現臨時覆蓋的最佳方法
當應用程序連接時,我想彈出一個覆蓋圖,其中包含通常的spinkin進度圖形和取消按鈕。我設計了一個ConnectProgressViewModel
和匹配ConnectProgressView
的覆蓋。
我的問題是什麼是最清潔的方式來顯示/隱藏父視圖模型的覆蓋?
A)暴露從我父視圖模型常數ConnectProgressViewModel
,並有ConnectProgressView
其知名度綁定到ConnectProgressViewModel.IsConnecting
財產。
B)暴露從父視圖模型的通用Overlay
財產,它當用戶想要連接設置爲ConnectProgressViewModel
。父視圖將ContentControl
綁定到此Overlay
屬性,數據模板處理其餘部分。
C)?
第一個似乎封裝功能更多,與應用程序不必關心顯示和隱藏覆蓋,但暴露一個常數ConnectProgressViewModel
時感覺不對,只是偶爾顯示。
第二種似乎更適合MVVM,ConnectProgressViewModel
僅在需要時才創建,但它將更多功能放在父級上,而且通用Overlay屬性也有點奇怪。
乾杯
編輯:
我要澄清,這個觀點並不僅僅是顯示忙碌狀態。它允許取消/重試和選擇不同的網絡資源等。爲了簡潔起見,我省略了這些細節,這可能是人們專注於繁忙指標時的錯誤。
但是,如何顯示/隱藏BusyIndicator? – GazTheDestroyer 2012-01-13 14:29:47
BusyIndicator在IsBusy爲true時自動顯示,當IsBusy爲false時會自動顯示。 – cadrell0 2012-01-13 14:30:58
是的,只是看了一下WPF Toolkit版本,謝謝。它似乎在所有的時間,並顯示/隱藏自己像我的A)。 – GazTheDestroyer 2012-01-13 14:33:25