View MvvmCross找不到将视图模型映射到视图的覆盖方法

View MvvmCross找不到将视图模型映射到视图的覆盖方法,view,xamarin,mapping,xamarin.android,mvvmcross,View,Xamarin,Mapping,Xamarin.android,Mvvmcross,设置类方法或层次结构是否已更改?我似乎找不到一个名为GetViewModelViewLookup的方法来在Setup类中重写 我正在尝试将视图映射到其他视图模型。我使用的是MvvmCross 3.5.1 我正在尝试以下方法 protected override IDictionary<Type, Type> GetViewModelViewLookup() 受保护的覆盖IDictionary GetViewModelViewLookup() 但它告诉我没有一个名为this的方法可

设置
类方法或层次结构是否已更改?我似乎找不到一个名为
GetViewModelViewLookup
的方法来在Setup类中重写

我正在尝试将视图映射到其他视图模型。我使用的是MvvmCross 3.5.1

我正在尝试以下方法

protected override IDictionary<Type, Type> GetViewModelViewLookup()
受保护的覆盖IDictionary GetViewModelViewLookup()
但它告诉我没有一个名为this的方法可以重写。我正试图效仿旧的MvvmCross博客上的例子

有什么想法吗

Update*看起来基类以前是
MvxBaseSetup
,其中包含
GetViewModelToViewLookup
,但现在它只是
MvxSetup
而不包含它


那么现在如何覆盖viewmodel以查看映射呢?

如果您只想更改命名方案,覆盖的函数是
CreateViewToViewModelNameing

公共类设置:MvxAndroidSetup
{
公共设置(上下文应用上下文):基本(应用上下文)
{
}
受保护的覆盖IMvxNameMapping CreateViewToViewModelNameing()
{
返回新的ReverseViewModelName();
}
受保护的覆盖IMvxApplication CreateApp()
{
返回新的Core.App();
}
受保护的覆盖IMVXStrace CreateDebugTrace()
{
返回新的DebugTrace();
}
}
类ReverseViewModelName:IMvxNameMapping
{
公共字符串映射(字符串输入名称)
{
//MyView由名为weiVyM的视图模型表示(多么有用:P)
返回字符串.Join(“,inputName.Reverse());
}
}
如果要更改映射,覆盖的函数是
初始化viewlookup
。如果您只想添加一些额外的映射,请调用
base.InitializeViewLookup()

公共类设置:MvxAndroidSetup
{
公共设置(上下文应用上下文):基本(应用上下文)
{
}
受保护的重写void InitializeViewLookup()
{
var registry=newdictionary()
{
{typeof(FirstViewModel),typeof(FirstActivity)},
{typeof(HomeViewModel),typeof(HomeActivity)},
{typeof(DetailViewModel),typeof(DetailActivity)},
{typeof(UploadViewModel),typeof(UploadActivity)}
};
var container=Cirrious.CrossCore.Mvx.Resolve();
container.AddAll(注册表);
}
受保护的覆盖IMvxApplication CreateApp()
{
返回新的Core.App();
}
受保护的覆盖IMVXStrace CreateDebugTrace()
{
返回新的DebugTrace();
}
}

如果您只想更改命名方案,则覆盖的函数是
CreateViewToViewModelNameing

公共类设置:MvxAndroidSetup
{
公共设置(上下文应用上下文):基本(应用上下文)
{
}
受保护的覆盖IMvxNameMapping CreateViewToViewModelNameing()
{
返回新的ReverseViewModelName();
}
受保护的覆盖IMvxApplication CreateApp()
{
返回新的Core.App();
}
受保护的覆盖IMVXStrace CreateDebugTrace()
{
返回新的DebugTrace();
}
}
类ReverseViewModelName:IMvxNameMapping
{
公共字符串映射(字符串输入名称)
{
//MyView由名为weiVyM的视图模型表示(多么有用:P)
返回字符串.Join(“,inputName.Reverse());
}
}
如果要更改映射,覆盖的函数是
初始化viewlookup
。如果您只想添加一些额外的映射,请调用
base.InitializeViewLookup()

公共类设置:MvxAndroidSetup
{
公共设置(上下文应用上下文):基本(应用上下文)
{
}
受保护的重写void InitializeViewLookup()
{
var registry=newdictionary()
{
{typeof(FirstViewModel),typeof(FirstActivity)},
{typeof(HomeViewModel),typeof(HomeActivity)},
{typeof(DetailViewModel),typeof(DetailActivity)},
{typeof(UploadViewModel),typeof(UploadActivity)}
};
var container=Cirrious.CrossCore.Mvx.Resolve();
container.AddAll(注册表);
}
受保护的覆盖IMvxApplication CreateApp()
{
返回新的Core.App();
}
受保护的覆盖IMVXStrace CreateDebugTrace()
{
返回新的DebugTrace();
}
}

谢谢Sven,我的问题是我希望将同一视图模型映射到多个视图。这会破坏字典键的唯一性。对于Xamarin iOS,是否有其他机制可以实现这一点?这是可能的,但您需要另一种方法。但是要找到正确的方法,您必须更多地说明您的需求。根据不同的条件,在导航到ViewModelAB时,您想查看ViewA还是ViewB?我有一个场景,其中我有一个摘要视图,单击它时,我想显示详细视图。我希望两者都使用相同的视图模型,因为摘要视图数据只是详细视图数据的子集。对于这种情况,最简单的解决方案是从您的
SummaryViewModel
继承一个“空的”
DetailViewModel
,以建立一对一的连接。还有更复杂的解决方案。但我认为这对于少数情况来说太费劲了。谢谢Sven,我的问题是我想要将同一个视图模型映射到多个视图。这会破坏字典键的唯一性。对于Xamarin iOS,是否有其他机制可以实现这一点?这是可能的,但您需要另一种方法。但是要找到正确的方法,您必须更多地说明您的需求。根据wich条件,在导航到ViewModelAB时,您想查看ViewA还是ViewB?我有一个场景,其中我有一个摘要视图,单击它时,我想显示详细的视图