在MVVM模式之后处理WPF应用程序中的导航的最佳方法是什么?

Mik*_*ike 4 navigation wpf mvvm

我已经在.xaml文件后面的事件处理程序中看到了这一点,但是它似乎不会遵循MVVM模式:MainApplication.mainFrame.Navigate(new HomePage());.是否有更好的方法可以在ViewModel中使用MVVM模式处理导航?还是在XAML?

Job*_*Joy 8

如果您正在寻找基于数据上下文显示不同的UserControl,那么只需了解以下简单的DataBinding和DataTemplate概念并对其进行扩展.想象一下,你有一个名为CurrentViewModel的属性,它绑定到你窗口内的ContentControl的内容

 <Window ... 
    <ContentControl Content="{Binding CurrentViewModel}" />
 </Window>
Run Code Online (Sandbox Code Playgroud)

现在假设你有ViewModel类ClassA和ClassB,所以适当地将实例设置为CurrentViewModel并为你的类定义全局DataTemplates(Views)

<DataTemplate DataType="{x:Type vm:ClassA}">
    <local:UserControlForA../>
</DataTemplate>


<DataTemplate DataType="{x:Type vm:ClassB}">
    <local:UserControlForB../>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

现在View从ViewModel逻辑自动控制,WPF将负责通过Datatemplate显示UserControl.

如果您不熟悉MVVM,请更好地使用本文.http://msdn.microsoft.com/en-us/magazine/dd419663.aspx