我已經構建了WPF UserControl View/ViewModel對:視圖XAML處理佈局和綁定,ViewModel處理邏輯,符合推薦MVVM模式。如何封裝WPF ViewModel /查看UserControl作爲控件
我希望能夠重新使用這個作爲控件。
如何隱藏/封裝與視圖關聯的ViewModel,以便我可以像使用標準控件[比如按鈕]一樣使用控件?
即如何隱藏控件的viewmodel?
我已經構建了WPF UserControl View/ViewModel對:視圖XAML處理佈局和綁定,ViewModel處理邏輯,符合推薦MVVM模式。如何封裝WPF ViewModel /查看UserControl作爲控件
我希望能夠重新使用這個作爲控件。
如何隱藏/封裝與視圖關聯的ViewModel,以便我可以像使用標準控件[比如按鈕]一樣使用控件?
即如何隱藏控件的viewmodel?
取決於您如何將ViewModel類綁定到控件。 如果你這樣做:
YourControl()
{
DataContex = new ViewModel();
}
話,我看不出有什麼問題。添加對您的控件的引用並使用它。
您可以在您的XAML中將您的ViewModel創建爲StaticResource。將DataContext設置爲ViewModel的問題在於,您無法使用該屬性,因此無法再使用您在其中使用該控件的窗口或頁面中的DataContext。
在XAML中聲明你的視圖模型:
<myNS:MyViewModel x:Key="ViewModel />
參考您的視圖模型的XAML中:
<TextBlock Text="{Binding Source={StaticResource ViewModel}, Path=TextToBind}" />
在後面的代碼,你可以訪問和快速初始化,我通常做一個屬性容易參考我的觀點模型。
private MyViewModel viewModel
{
get { return this.Resources["ViewModel"] as MyViewModel; }
}
因此可以說我的控件由一個文本(搜索字符串)框和一個列表框組成。該控件的VM會將2個集合公開爲屬性 - 1.項目總數列表,以及2.與當前搜索字符串匹配的項目列表。它還會顯示2個屬性:1.對於選定的項目,2.對於搜索字符串。控制的主要數據上下文是它自己的內部虛擬機,我可以按照上面的建議來做,問題是如何在視圖上公開'中間'屬性,以便這些'中間'屬性可以綁定到父視圖上的道具。 – 2010-12-14 12:29:14
將'intermediate'屬性作爲控件(View類)的依賴項屬性(DP),並在父控件中將它們用作任何其他使用DP的控件。 – Arseny 2010-12-14 14:59:39