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