我正在玩Prism的Xamarin.Forms(mvvm),并注意到some tutorials显示导航到另一个页面,而others显示导航到一个视图。
在较高的层面上,我理解字面上的差异......但是我不明白何时应该使用一个而不是另一个?我倾向于认为某些推理是依赖性的,例如:
网页的实例为table2
>使用User
操作时导航到视图= User
仍然存在...同时,如果您想要在导航back
和to
页面时使用相同的行为,我需要通过参数传递实例...这是正确的/导航进出from
而不是views
的原因吗?
答案 0 :(得分:1)
从技术上讲,在纯MVVM中,ViewModel
应该完全不知道View
,反之亦然。当您使用Page First Navigation
方法时,您违反了第一句话。这是一个例子:
class MyViewModel
{
}
class MyView
{
public MyView()
{
InitializeComponent();
// Alternatively you can do the same thing in XAML
this.BindingContext = new MyViewModel();
}
}
如您所见,View
知道ViewModel
当您使用ViewModel First Navigation
方法时,决定哪个
View
应该将女巫ViewModel
委托给专门的班级。然后,此类在自定义NavigationService
中用于将ViewModel
与View
匹配。因此,可以从ViewModel
导航到ViewModel
。这样,ViewModel
和View
对彼此一无所知。这种方法的缺点是复杂性。
这是一个非常简短的答案,但是,我希望你能得到关键点。这两种方法都有很多例子:
P.S。:Prism具有处理导航的非常好的机制。我上面写的和我提供的例子只是为了对这种方法的低级理解。如果你想使用Prism,你一定要熟悉它。