Setup
类方法或层次结构是否已更改?我似乎无法在Setup类
GetViewModelViewLookup
的方法
我正在尝试将视图映射到不同的视图模型。我正在使用MvvmCross 3.5.1
我正在尝试以下
protected override IDictionary<Type, Type> GetViewModelViewLookup()
但它告诉我没有一个名为this的方法来覆盖。我试图按照旧版MvvmCross博客上的示例link
有什么想法吗?
更新*看起来基类曾经是MvxBaseSetup
,其中包含GetViewModelToViewLookup
,但现在只有MvxSetup
不包含它。
那么如何覆盖viewmodel以立即查看映射?
答案 0 :(得分:0)
如果您只想更改命名方案,则覆盖的功能为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();
}
}