【发布时间】:2015-03-02 04:49:57
【问题描述】:
我在 Internet 上看到的所有示例都有两个区域 - 一个区域用于更改视图的按钮,另一个区域用于应由该按钮更改的视图。所以它一直有效,直到您尝试访问位于“祖父”数据上下文中的命令。但是,我想将整个视图更改为另一个视图,而不需要划分区域或任何侧边栏并将数据从 View1 发送到 View2,然后更新 View1。
我正在尝试更改 MVVM 应用程序中的视图。例如,我有“ApplicationView”(一个包含 Views1(UserControl1) 和 View2(UserControl2) 的 DataTemplates 的主机)。这些用户控件有自己的数据上下文。 ApplicationView 的 xml 是:
<Window ……..>
<Window.Resources>
<DataTemplate DataType="{x:Type localViewModel:VMMain}">
<localView:MainView/>
</DataTemplate>
<DataTemplate DataType="{x:Type localViewModel:VMEditStudent}">
<localView:EditStudentView/>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="{Binding CurrentPageViewModel}"/>
</Grid>
View 1(UserControl1) 有自己的 DataContext:
View 2(UserControl2) 也有自己的 DataContext:
我想要的是在 DataGrid 中选择一个项目(Adam),单击“编辑”按钮,然后 View1 应该被 View 2 替换为来自数据网格的填充数据。据我了解,我应该通过处理“编辑”按钮的命令来更改 View1,然后应该显示 View 2,然后我更改数据,然后应该更新 View1。怎么做?
我们将不胜感激一些带有代码的示例!谢谢。
【问题讨论】:
-
你看过 Prism 框架和它的 RegionManager 吗?
-
@Tseng,是的,我看过这个例子,这些例子很有趣。
-
RegionManager 独立于侧边栏工作。您在 XAML 中定义区域并命名它们,然后从代码中导航它们。参考应用程序显示了最佳实践,并且您建议的此类行为不被视为桌面上的最佳实践,并且更类似于移动应用程序的可用性。 RegionManager 仍然应该涵盖您的情况
-
@Tseng,谢谢。但是,我找不到没有侧边栏导航的好例子。请您分享一些示例或链接以查看示例。
标签: c# wpf mvvm view navigation