2010-07-19 37 views
2

特別在MVVM Light工具箱中?我還沒有深入研究Prism代碼,看看它在WPF UI中對區域做了什麼。看起來像使用MVVM Light中的消息傳遞和ViewModelLocator,你可以做類似的事情....你能嗎?任何人都可以舉例說明你如何做到這一點?基本上我想點擊一個按鈕並將兩個不同的視圖模型加載到UI中。也許更好的解釋方式是類似Outlook的導航窗格功能。如何在沒有棱鏡的WPF中做區域?

回答

4

這可以很容易地在WPF中完成,沒有任何框架。

只需在您的應用程序(或在窗口/用戶控制級別)設置DataTemplate,將視圖模型映射到您希望爲該視圖模型顯示的視圖。

然後,您可以只使用ContentPresenter,並將其內容綁定到您的ViewModel中的單個屬性(可以是類型object)。當你想將「region」設置爲特定的視圖時,只需將該屬性設置爲適當的ViewModel,WPF就會自動爲你連接所有的東西。

+0

甜,我覺得應該有一種XAML方式。謝謝。 – nportelli 2010-07-19 20:44:04

+0

好的。我一定不夠理解。我想我沒有設置DataTemplate。不知道如何將ViewModel映射到View。我假設它是這樣的,所以我沒有得到像我現在這樣的對象名稱。但這是否意味着視圖必須知道要顯示的視圖模型? – nportelli 2010-07-21 15:46:47

+1

@nportelli:某個地方的View層需要指定「ViewModel XXX轉到View YYY」。而已。閱讀我的MVVM系列的「模板」部分(可以選擇查看示例代碼)。它使用這種技術,並介紹瞭如何使DataTemplates的工作:http://reedcopsey.com/series/windows-forms-to-mvvm/ – 2010-07-21 16:01:27