Xamarin.forms 不使用MvxContentPage时,MVVMCross BindingContext为空

Xamarin.forms 不使用MvxContentPage时,MVVMCross BindingContext为空,xamarin.forms,mvvmcross,syncfusion,Xamarin.forms,Mvvmcross,Syncfusion,我的几个页面使用Syncfusion的SfBackdropPage控件时出现问题。此控件要求页面的基础为SfBackdropPage,而不是通常的ContentPage,否则它将无法工作 要使MVVMCross工作,页面需要有一个基础,例如MvxContentPage 你看到了吗 我向Syncfusion开了一张罚单,看看他们能否解决这个问题,但基本上他们只是说这不可能。因此,由于我需要将该控件作为页面的一部分,所以我必须保持原样 如何设置MVVMCross来处理这些页面,而不让页面继承自Mvx

我的几个页面使用Syncfusion的
SfBackdropPage
控件时出现问题。此控件要求页面的基础为
SfBackdropPage
,而不是通常的
ContentPage
,否则它将无法工作

要使MVVMCross工作,页面需要有一个基础,例如
MvxContentPage

你看到了吗

我向Syncfusion开了一张罚单,看看他们能否解决这个问题,但基本上他们只是说这不可能。因此,由于我需要将该控件作为页面的一部分,所以我必须保持原样

如何设置MVVMCross来处理这些页面,而不让页面继承自
MvxContentPage

我在Android项目的
setup.cs
中使用了以下内容:

protected override IMvxViewsContainer InitializeViewLookup(IDictionary<Type, Type> viewModelViewLookup)
{
    viewModelViewLookup.Add(typeof(SitesViewModel), typeof(SitesView));
    return base.InitializeViewLookup(viewModelViewLookup);
}
protected override IMvxViewsContainer InitializeViewLookup(IDictionary viewModelViewLookup)
{
添加(typeof(SitesViewModel),typeof(SitesView));
返回base.InitializeViewLookup(viewModelViewLookup);
}
我可以导航到该页面,但由于未设置绑定上下文,因此出现空引用异常。我曾尝试在XAML中设置此项,但它需要一个无参数构造函数,但这是不可能的,因为视图模型使用依赖项注入,因为它依赖于传入的这些对象

谁能给点建议,我还在学习MVVMCross,希望我错过了一些东西

XF:4.8.0.1687 MVVMCross:7.1.2

更新1: 我试图在MVVMCross源代码中找到一些东西,看看它是如何设置绑定上下文的,但没有找到任何东西。现在,我正在代码隐藏页面中手动创建绑定上下文,并使用
Mvx.IocProvider.Resolve
传递所需的接口

我不确定这是否是解决这个问题的最佳方法,但它确实有效。也许有更好的办法

更新2:
更新1路由似乎不好,因为这样做会创建一个新的VM实例,这是预期的,但是已经存在一个由MVVMCross框架创建的实例。问题是如何从代码背后获取VM实例?到目前为止,我找到的唯一方法是使用
IMvxOverridePresentationAttribute
并将请求强制转换为
MVXViewModelInInstanceRequest
,然后允许访问我分配给绑定上下文的VM实例。对于这种方法的最佳方法,我最好再问一个问题。

要想获得更简洁的解决方案,您可以在VM中定义一个无参数构造函数,并解析其中的接口。然后可以在XAML中设置绑定上下文。这与您的更新中的内容基本相同,但它将依赖项解析从代码后面移到了虚拟机上。只是希望一些MVVMCross专家来告诉我有一个更好的方法来做到这一点。