MvvmCross无法找到替代方法映射视图模型具有Setup类方法或层级改为查看

问题描述:

?我似乎无法找到一个名为GetViewModelViewLookup在设置类MvvmCross无法找到替代方法映射视图模型具有<code>Setup</code>类方法或层级改为查看

我试图映射视图,以不同的视图模型重写方法。我使用MvvmCross 3.5.1

我想下面

protected override IDictionary<Type, Type> GetViewModelViewLookup() 

,但它告诉我,没有一个名为借此覆盖方法。我正在尝试关注旧MvvmCross博客上的示例link

任何想法?

更新*它看起来好像基类曾经是MvxBaseSetup其中包含GetViewModelToViewLookup,但现在它只是MvxSetup它不包含它。

那么,我该如何重写viewmodel来查看映射呢?

如果你只是想改变命名方案,覆盖功能CreateViewToViewModelNaming

public class Setup : MvxAndroidSetup 
{ 
    public Setup(Context applicationContext) : base(applicationContext) 
    { 
    } 

    protected override IMvxNameMapping CreateViewToViewModelNaming() 
    { 
     return new ReverseViewModelNaming(); 
    } 

    protected override IMvxApplication CreateApp() 
    { 
     return new Core.App(); 
    } 

    protected override IMvxTrace CreateDebugTrace() 
    { 
     return new DebugTrace(); 
    } 
} 

class ReverseViewModelNaming : IMvxNameMapping 
{ 
    public string Map(string inputName) 
    { 
     // MyView is presented by the view model named weiVyM (how useful :P) 
     return string.Join("", inputName.Reverse()); 
    } 
} 

如果你想改变映射,覆盖功能InitializeViewLookup。如果您只是想添加一些额外的映射,请致电base.InitializeViewLookup()

public class Setup : MvxAndroidSetup 
{ 
    public Setup(Context applicationContext) : base(applicationContext) 
    { 
    } 

    protected override void InitializeViewLookup() 
    { 
     var registry = new Dictionary<Type, Type>() 
     { 
      { typeof(FirstViewModel), typeof(FirstActivity) }, 
      { typeof(HomeViewModel), typeof(HomeActivity) } , 
      { typeof(DetailViewModel), typeof(DetailActivity) }, 
      { typeof(UploadViewModel), typeof(UploadActivity) } 
     }; 
     var container = Cirrious.CrossCore.Mvx.Resolve<IMvxViewsContainer>(); 
     container.AddAll(registry); 
    } 

    protected override IMvxApplication CreateApp() 
    { 
     return new Core.App(); 
    } 

    protected override IMvxTrace CreateDebugTrace() 
    { 
     return new DebugTrace(); 
    } 
} 
+0

谢谢Sven,我的问题是我想将同一视图模型映射到多个视图。这打破了字典键的唯一性。对于Xamarin iOS有无论如何通过另一种机制来做到这一点? – rideintothesun

+0

这是可能的,但比你需要另一种方法。但要找到正确的方法,你必须告诉更多关于你的要求。基于什么条件,您是否想要在浏览ViewModelAB时决定查看ViewA或ViewB? –

+0

我有一个场景,我有一个摘要视图,当点击它时,我想显示详细的视图。我想这两个使用相同的视图模型,为摘要视图的数据仅仅是细节的子集,查看数据 – rideintothesun