设置MvvmCross 6.0 Xamarin.Forms UWP应用程序代码的正确方法是什么?

时间:2018-06-11 00:17:48

标签: xamarin.forms uwp initialization mvvmcross

我的UWP应用程序继承自Base类,它继承自MvxApplication<Setup, CoreApp>

public sealed partial class App : WindowsApplication
{
    public App()
    {
        InitializeComponent();
    }
}

public class WindowsApplication : MvxApplication<Setup, CoreApp>
{
}

public class Setup : MvxWindowsSetup<CoreApp>
{
    public override IEnumerable<Assembly> GetViewAssemblies()
    {
        // need to do this as otherwise I receive the message that corresponding view to view model is not found
        var assemblies = base.GetViewAssemblies().ToList();
        assemblies.Add(typeof(Forms.App).Assembly);
        return assemblies;
    }
}

但是,启动它时,收到以下错误消息:

  

未配置MvxContentPagePresentationAttribute类型   演讲者词典

据我了解,所有这些都不是启动Xamarin.Forms MvvmCross应用程序的正确方法,因为UWP App和安装程序应分别从MvxFormsApplicationMvxFormsWindowsSetup<CoreApp, Forms.App>继承(让Xamarin.Forms应用程序正确初始化)。

可是:

  • MvxFormsApplication不是通用的,也不提供传递Forms-generic设置的功能。
  • 即使我从MvxFormsApplication继承了应用程序并使用this.RegisterSetupType<MvxFormsWindowsSetupInheritor>();,Visual Studio编译器也从不允许我编译项目,因为一些奇怪的错误消息(类似于The name “WindowsApplication” does not exist in the namespace “…”)(这个可能是Visual Studio的一些问题,但我有VS 15.7版本,它希望代码能够工作(同样,MvvmCross声明它们支持UWP和XF)。

所以,从我的理解,如果有Xamarin.Forms应用程序,必须有一些方法将实际上Xamarin.Forms App类传递给UWP App类初始化。

MvvmCross再次代表UWP和Xamarin.Forms支持,但是我看不出设置此类应用程序的方式的任何明确示例

MvvmCross文档一如既往地非常“适度”。有一些关于设置MvvmCross UWP应用程序以及设置MvvmCross XF iOS / Android的说明,但关于MvvmCross XF UWP的唯一一个词是:

  

您现在可以自由地将自定义渲染器放在另外的渲染器中   部件。要使其工作,您只需添加装配即可   到Setup.ViewAssemblies集合。   (在官方网站上的文档)   (这仍然听起来很奇怪,因为iOS和Android版本不需要额外的代码,这让我觉得这样的(当前)文档还没有完全实现)

  
      
  • UWP,WPF
  •   
  • 从MvxApplication扩展应用程序。 (App:MvxApplication {})
  •   

来自MvvmCross.Forms package readme.txt文件,当所有其他平台再次期望从基于MvxForms *的应用程序类继承时。

MvvmCross伙计们,对此有什么看法?

1 个答案:

答案 0 :(得分:1)

当我设置一个新的Xamarin.Forms项目时,我总是遵循Playground sample in the MvvmCross GitHub,因为这个示例随着API一起发展并且始终是最新的,因为它是MvvmCross解决方案的一部分,所以任何提交都需要保留其功能。因此,如果您想在最小的UWP + Xamarin.Forms项目中查看所有内容的外观,请参阅链接文件夹中的Playground.Forms.UIPlayground.Forms.Uwp项目。