Mik*_*ike 4 navigation wpf mvvm
我已经在.xaml文件后面的事件处理程序中看到了这一点,但是它似乎不会遵循MVVM模式:MainApplication.mainFrame.Navigate(new HomePage());
.是否有更好的方法可以在ViewModel中使用MVVM模式处理导航?还是在XAML?
如果您正在寻找基于数据上下文显示不同的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