我一直在學習與Josh Smith's article MVVM模式,我想創建一個經典的佈局與一些鏈接到右側(用命令管理),所以當我點擊一個我可以顯示我的視圖向右移動到一個選項卡控件(在它內部有一個ContentControl)。動態綁定視圖到ContainerControl與MVVM
當我使用具有特定View和ViewModel的DataTemplate時,這很簡單,我希望像這樣在屏幕上顯示。
<!-- this section into my MainWindow's resources file -->
<DataTemplate xmlns:vm='clr-namespace:WpfFramework.ViewModels'
xmlns:vw='clr-namespace:WpfFramework.Views'
DataType="{x:Type vm:MySpecificViewModel }" >
<vw:MySpecificView />
</DataTemplate>
但是,我想要更通用的東西。我的意思是我的mainWindow不應該知道一個特定的視圖或特定的ViewModel。它應該只知道它綁定了一些命令並且具有顯示「某些視圖」的選項卡控件。包括Josh Smith's article在內的每個示例似乎都具有有限的視圖範圍和視圖模型,這對於示例非常有用。因此,我怎麼能告訴我的ContentControl某些視圖(及其相應的viewModel)會在那裏,而不是如此具體(沒有「燒」到mainView的具體類型)?
問候 羅德里戈
PD。我已經嘗試與基地一個ViewModel和基本視圖,但它似乎並沒有工作。
雷切爾您好,感謝您的建議有興趣(順便說一下,你能糾正你的鏈接?)。我已經嘗試過,但我無法弄清楚如何將HomePageViewModel與其相應的HomePageView關聯起來? –
@Rodrigo你在問題中正確地做了。在您的應用程序資源中,定義將每個ViewModel映射到指定View的數據模板。通常我把映射放在App.xaml的''下面。另一種方法是將DataTemplates放入ResourceDictionary中,並在運行時將ResourceDictionaries加載到應用程序的MergedDictionaries中。如果ResourceDictionaries是動態加載的,或者如果它們存在於其他dll中,則使用此方法。 (我也修正了鏈接) –
Rachel
我對[你的例子](http://rachel53461.wordpress.com/2011/05/28/switching-between-viewsusercontrols-using-mvvm/)有個疑問。是否有涉及視圖?我的意思是,如果我有300個視圖,我是否應該在mainView上顯式標記該標記? –