2010-01-02 154 views
2

我有一個進度條顯示,因爲我正在異步加載webclient對象的圖像。一旦圖像下載完成,我在我的viewmodel中將loadingComplete布爾屬性設置爲True,表示加載過程已經完成。目前,我正在使用此值作爲附加屬性來將焦點設置在控件上。什麼是刪除佈局元素的最佳方法

我想要的是摺疊進度條控件,然後顯示圖像。

我想知道的是做這件事的最好方法是什麼,以下方法有哪些優缺點?

1)應該創建視圖模型一個LoadingOpacity布爾屬性,我可以再設置來設置進度條的不透明度爲0.0(這將在loadingComplete設置進行設置)?

2)或者我應該創建一個轉換器(IValueConverter)並使用loadingComplete屬性將其轉換爲Visibility.Collapsed值。這樣我的視圖模型中不需要任何額外的屬性?

3)或者我應該在視圖模型上創建一個摺疊屬性並將其綁定到進度條的可見性屬性?

4)或是否有其他方法可以做到這一點?

感謝 JD

回答

7
  1. 我不會因爲鼠標的不透明性的解決方案去命中測試。你的透明元素仍然是可見的,但是你可能想要在下載完成時淡化進度條,但是一個事件觸發的故事板可能是更好的選擇。
  2. 我個人喜歡價值轉換器,它們簡單,簡潔,描述性和重點。 這也被廣泛接受爲正確的選擇。
  3. MVVM最佳實踐規定視圖模型不知道該視圖。通過在視圖模型中引入Visibility類型屬性,您可以通過某種方式將它與視圖耦合(儘管分鐘)。
  4. 大概:)
+0

是的 - 選項2礦,太:) – kiwipom 2010-01-02 20:54:54

+0

+1的選項2. – 2010-01-02 21:01:30

+0

謝謝你們。關於3,視圖模型應該更多地以模型/業務爲導向?我的意思是通過閱讀屬性我可以計算出它們的用途,但是如果我帶來不透明或可見性,它會變得更難以理解,並且它們將專用於我所擁有的視圖(如果我換出視圖,那麼它們可能根本不會被使用)。 – 2010-01-02 21:07:30

相關問題