从wiki, using[MvxViewFor(typeof(YourViewModel))]
可能是最简单的解决方案:
覆盖 View-ViewModel 关联
默认情况下,MvvmCross 使用按名称约定发现的 ViewModel 类型发现 View 关联的 ViewModel
这使得原型初始应用程序的功能通常非常简单。
然而,随着应用程序的规模和复杂性的增长,有时开发人员喜欢覆盖这种查找行为。
为此,他们可以:
提供 ViewModel 的具体类型,其中指定了一个 - 例如:
public new DetailViewModel ViewModel
{
get { return base.ViewModel as DetailViewModel; }
set { base.ViewModel = value; }
}
或提供使用指定的 ViewModel 的显式类型MvxViewForAttribute
此外,在每微秒的启动时间都很重要的情况下,它们还可以通过覆盖该InitializeViewLookup
方法来帮助减少反射开销 - 例如
protected override void InitializeViewLookup()
{
var viewModelViewLookup = new Dictionary<Type, Type>()
{
{ typeof (FirstViewModel), typeof(FirstView) },
{ typeof (SecondViewModel), typeof(SecondView) },
//
{ typeof (UmpteenthViewModel), typeof(UmpteenthView) },
};
var container = Mvx.Resolve<IMvxViewsContainer>();
container.AddAll(viewModelViewLookup);
}