2012-09-05 30 views
0

可能重複:
How to define the usercontrols in mvvm pattern?替代普通的用戶控件使用MVVM

我想寫使用MVVM我的第一個WPF應用程序。我創建了一個由2部分組成的用戶控件,一個DataGrid和一個詳細視圖(顯示DataGrid中所選行的詳細信息)。此控件假設加載和顯示不同的數據模型(如客戶,產品等),但由於它似乎無法使用通用用戶控件,因此我發現我的用戶控件無用。坦率地說,我開始認爲MVVM模式中的任何用戶控件都是無用的。在我的觀點中,是否有任何替代方法可以防止不必要的複製/粘貼相同DataGrid和詳細視圖? thx預先

回答

1

首先,它可能使用通用的用戶控件。但除此之外,這可能不是你想要的。

你需要做的是創建一個可重用的用戶控件。有幾種選擇:

  1. 創建基礎的用戶控制和允許視圖從該
  2. 導出創建基於當前視圖模型(推薦)

要創建認爲構成本身的圖包含延遲加載視圖模型的特定用戶控件的模型,您可以使用Catel。欲瞭解更多信息,請參閱this documentation

免責聲明:我是Catel的開發人員之一,但如果其他人知道其他方式,我很高興聽到他們。

+0

謝謝吉爾特。我已經嘗試過Catel,它使用通用用戶控件的方式是驚人的,但它迫使我使用Catel.Mvvm.IviewModel,它與我自己的IviewModel和我的其他代碼不兼容。在旁邊,我想你是對的,這不是我想要的。 關於你推薦的第二個選項,你的意思是視圖應該通過獲得視圖模型作爲構造參數來實例化? –

+0

我正在檢查你提到的第二個選項,如果我正確地得到了這個想法,我需要創建一個用戶控件,它具有一個類型爲「IViewModel」的依賴屬性,可以根據當前視圖模型進行設置,然後設置基於該屬性的數據綁定。但是在這種情況下,只有IviewModel中存在的公共屬性是可訪問的,但我提到的數據網格的列需要根據當前視圖模型的不同值綁定到不同的值。 –

+0

換句話說,不管當前的視圖模型是什麼,都有一個數據網格和一些按鈕以及將要使用很多次的東西,並且讓我覺得我需要一個可重用的控件,但另一方面,一些屬性像這些列需要精確指定。 –