将单个视图注册为多个ViewModel的视图 - MVVMCross

Pat*_*bee 2 mvvmcross

  • MMVMCross
  • Android的
  • Windows 8

我们有一个View,称之为FruitView,显示一个名为FruitViewModel的ViewModel.FruitViewModel可以显示特定类型水果的列表.

这一切都很好.

出于几个原因,我们创建了继承自FruitViewModel的AppleViewModel和PearViewModel.它们不做任何事情,所有调用都是对基本视图模型进行的.

当我尝试使用MvxNavigatingObject.ShowViewModel导航到它们时,我想将FruitView注册为AppleViewModel和PearViewModel的视图.

我看不到如何覆盖View到ViewModels的默认链接.我读了一篇建议覆盖Setup类中的GetViewModelViewLookup的帖子,但似乎不存在.我也看过CustomPresenters,但看起来不是正确的方法.

其他人这样做了吗?

谢谢

Pat*_*bee 8

发现此问题之后如何导航到扩展抽象类的ViewModel?(不是我发布时的建议之一)我发现可以在每个平台的Setup.cs中覆盖的InitializeViewLookup.我正在扩充当前的映射而不是替换所以首先调用base.InitializeViewLookup.

protected override void InitializeViewLookup()
{
    base.InitializeViewLookup();

    var viewModelViewLookup = new Dictionary<Type, Type>()
    {
        { typeof(AppleViewModel), typeof(FruitView) },
        { typeof(PearViewModel), typeof(FruitView) }
       };

    var container = Mvx.Resolve<IMvxViewsContainer>();
    container.AddAll(viewModelViewLookup);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

  • 重载在 setup.cs 中 (2认同)