Mvvm 导航到页面而不是视图

Mvvm 导航到页面而不是视图,mvvm,xamarin.forms,prism,Mvvm,Xamarin.forms,Prism,我正在用Prism处理Xamarin.Forms(mvvm),注意到show导航到另一个页面的同时show导航到一个视图 在高层次上,我理解字面上的区别。。。然而,我不明白什么时候我应该使用一个而不是另一个?我倾向于一些推理是围绕依赖性的,例如: 页面具有用户>导航到视图的实例=用户在使用返回操作时仍然存在。。。同时,如果您希望在导航到和从页面导航时实现相同的行为,则需要通过参数传递实例。。。这是否正确/导航到视图而不是页面的原因是什么 从技术上讲,在纯MVVM中,ViewModel应该完全不了

我正在用Prism处理Xamarin.Forms(mvvm),注意到show导航到另一个页面的同时show导航到一个视图

在高层次上,我理解字面上的区别。。。然而,我不明白什么时候我应该使用一个而不是另一个?我倾向于一些推理是围绕依赖性的,例如:


页面具有
用户
>导航到视图的实例=
用户
在使用
返回
操作时仍然存在。。。同时,如果您希望在导航
和从页面导航
时实现相同的行为,则需要通过参数传递实例。。。这是否正确/导航到
视图
而不是
页面
的原因是什么

从技术上讲,在纯MVVM中,
ViewModel
应该完全不了解
视图,反之亦然。当您使用
页面优先导航
方法时,您违反了第一句话。以下是一个例子:

class MyViewModel
{
}

class MyView
{
    public MyView()
    {
        InitializeComponent();
        // Alternatively you can do the same thing in XAML
        this.BindingContext = new MyViewModel();
    }
}
如您所见,
视图
知道
视图模型

当您使用
ViewModel第一导航方法时
View
应将
ViewModel
委托给专用类。然后在自定义
导航服务
中使用此类将
视图模型
视图
匹配。因此,可以从
ViewModel
导航到
ViewModel
。这样一来,
ViewModel
View
就互不了解了。这种方法的缺点是复杂性

这是一个非常简短的回答,但是,我希望你能理解关键点。这两种方法都有很多例子:


另外:Prism有很好的导航机制。我上面写的和我提供的例子只是为了对这种方法有一个较低的理解。如果你想使用Prism,你一定要熟悉它。

在X中。表单
视图的
只是可视对象,它们不支持任何导航或任何类型的基础设施。只有当您导航到承载它们的
页面
时,才能显示它们,但导航到
视图
这句话毫无意义。因此,您应该只使用
页面的
。。在您的示例项目中,它们也只导航到
页面的
。在您所说的导航到“视图”的视图中,它只在名称中,因为
ViewA
是一个
ContentPage