2012-03-23 80 views
3

我正在使用WPF與WAF框架。如何在WPF的用戶控件中構建可重用的用戶控件?

我有一塊UI(讓我們說它收集用戶憑據),獲取呈現在多個視圖(見圖)。

我想,嘿,這是可重複使用的,讓我們把它放在自己的用戶控件中。

如果我忽略了內部用戶控件,並且只是「扁平化」它,但是試圖封裝它,卻讓我想知道最好的方法是什麼,我可以使一切正常工作。這個「憑據」用戶控件應該有自己的專用視圖模型嗎?它應該通過依賴屬性暴露它的數據嗎?什麼是最好的方法?

我需要將從憑證控件收集的數據公開到外部用戶控件的視圖模型。

enter image description here

回答

2

如果這種 「資格證書」 的用戶控制有其自己的專用視圖模型?它應該通過依賴屬性暴露它的數據嗎?什麼是最好的方法?

一個用戶控件可以一舉兩得 -

如果你想使用它作爲一個「控制」 - 這往往是在這樣的情況的話,我只會把它作爲100%視野。因此,我不會讓UserControl有一個ViewModel(至少不是公開的),並通過依賴屬性公開它的屬性。這在重用方面提供了最大的靈活性,因爲UserControl的行爲與其他任何FrameworkElement相似,並且可以像其他任何控件一樣放入並綁定到您自己的其他位置中的屬性。

但是,當UserControl充當ViewModel的視圖時,情況就不同了。在這裏,目標不是重用,而是視圖和虛擬機之間的關注點分離。

這種情況聽起來更像第一個 - 你想擁有一個可以在多個位置重用的控件。在這種情況下,這基本上成爲一個視圖元素。

+0

非常感謝你 – jglouie 2012-03-23 21:32:34