【发布时间】:2014-04-23 21:03:35
【问题描述】:
我是 WPF 和 MVVM 模式的新手。我正在尝试构建一个“逐步”或“向导”之类的应用程序。 所以用户应该首先登录然后选择一些数据,最后选择的数据应该存储在某个地方。 (这个流程永远不会改变!) 但是,我决定为每个模板使用 DataTemplates 和不同的 ViewModel,为填充模板的窗口使用 MainViewModel。 (认为这里的不同帖子应该没问题)
但现在我的问题开始了。我知道如何从 MainViewModel 更改当前视图,但我想从内部 ViewModel 更改当前视图。而且我希望能够从一个内部 ViewModel 收集数据到另一个,但我不知道这是如何工作的。
主视图模型:
public class MainWindowViewModel : ViewModelBase
{
public ViewModelBase CurrentView {get; set;}
public MainWindowViewModel()
{
CurrentView = new ViewModelA;
}
}
XAML:
<Window x:Class="PUSEImporter.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VM="clr-namespace:PUSEImporter.ViewModel"
xmlns:V="clr-namespace:PUSEImporter.View">
<Window.DataContext>
<VM:MainWindowViewModel />
</Window.DataContext>
<Window.Resources>
<DataTemplate DataType="{x:Type VM:ViewModelA}">
<V:Detail />
</DataTemplate>
<DataTemplate DataType="{x:Type VM:ViewModelB}">
<V:Overview />
</DataTemplate>
</Window.Resources>
<ContentPresenter Content="{Binding CurrentView}"/>
</Window>
所以考虑 ViewModelA 中的一个按钮(或 ViewModelA 中的视图),现在我想在有人单击该按钮时切换到 ViewModelB。并且 ViewModelA 收集的数据还不够,ViewModelB 也应该可用。
这可能是使用这种技术的首选方式还是我误解了一些概念? (如果这是真的,我应该如何处理这样的事情?)
提前致谢!
【问题讨论】:
标签: wpf mvvm datatemplate