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();
}
}
谢谢Sven,我的问题是我想将同一视图模型映射到多个视图。这打破了字典键的唯一性。对于Xamarin iOS有无论如何通过另一种机制来做到这一点? – rideintothesun
这是可能的,但比你需要另一种方法。但要找到正确的方法,你必须告诉更多关于你的要求。基于什么条件,您是否想要在浏览ViewModelAB时决定查看ViewA或ViewB? –
我有一个场景,我有一个摘要视图,当点击它时,我想显示详细的视图。我想这两个使用相同的视图模型,为摘要视图的数据仅仅是细节的子集,查看数据 – rideintothesun