导航到页面与视图

时间:2018-03-04 05:16:51

标签: mvvm xamarin.forms prism

我正在玩Prism的Xamarin.Forms(mvvm),并注意到some tutorials显示导航到另一个页面,而others显示导航到一个视图。

在较高的层面上,我理解字面上的差异......但是我不明白何时应该使用一个而不是另一个?我倾向于认为某些推理是依赖性的,例如:

网页的实例为table2>使用User操作时导航到视图= User仍然存在...同时,如果您想要在导航backto页面时使用相同的行为,我需要通过参数传递实例...这是正确的/导航进出from而不是views的原因吗?

1 个答案:

答案 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中用于将ViewModelView匹配。因此,可以从ViewModel导航到ViewModel。这样,ViewModelView对彼此一无所知。这种方法的缺点是复杂性。

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

P.S。:Prism具有处理导航的非常好的机制。我上面写的和我提供的例子只是为了对这种方法的低级理解。如果你想使用Prism,你一定要熟悉它。