我需要在我的跨平台应用程序中引入Gtk平台支持。该应用程序是使用mvvmcross构建的。我查看了一下,没有找到该框架现有的Gtk“平台”实现。我有时间来处理它。我应该从哪里开始?有哪些潜在问题需要注意?
更新我看到你在这里发表了评论https://github.com/MvvmCross/MvvmCross/pull/2697,最好将聊天保留在问题中而不是SO。
你看过twitter convo吗?然后链接到这个GitHub issue
从Slodge(Stuart)的评论中,他给出了MVVMCross 3.1所需的基本步骤:
你需要根据你所使用的版本来适应这些步骤。此外,上面提供的链接对于3.1版本将会失效。因此,你需要将它们映射到更新的等价物。有人以前已经做过了
我 - 主要是在这些平台上
@deapsquatter 和 @loqu8/Tim - Mac 平台
@et-nowis - Unity/Ngui - https://github.com/et-nowis/mvx-unity-ngui/blob/master/Assets/External/MvvmCross/Cirrious/Cirrious.MvvmCross.Binding.Unity/MvxUnityBindingBuilder.cs
现在 3.1 版本相当稳定,完整平台的主要步骤包括:
- 从 CrossCore 开始 - 您需要为该平台编写一小组扩展 - 类似于每个平台中的 https://github.com/MvvmCross/MvvmCross/tree/v3.1/CrossCore - 实际上每个平台需要什么取决于平台。Droid/Touch 平台的主要内容是 Views 文件夹 - 但是这些可能根本不需要“只绑定”- https://github.com/MvvmCross/MvvmCross/tree/v3.1/CrossCore/Cirrious.CrossCore.Droid/Views
- 构建绑定库 - 这始于特定于平台的 BindingBuilder - 每个基本上都添加自定义的“绑定模式”-TargetFactories - 用于该平台。请参见以下示例:
- Droid - https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs
- Touch - https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Touch/MvxTouchBindingBuilder.cs
- WindowsEx Binding - https://github.com/MvvmCross/MvvmCross/tree/v3.1/Cirrious/Cirrious.MvvmCross.BindingEx.WindowsPhone/WindowsBinding
- Unity - https://github.com/et-nowis/mvx-unity-ngui/blob/master/Assets/External/MvvmCross/Cirrious/Cirrious.MvvmCross.Binding.Unity/MvxUnityBindingBuilder.cs
- 构建 Mvvm 平台层。这通常只涉及添加平台特定的 Setup、Presenter(也称为 NavigationService)和 BasePage(例如基本 Activity、基本 UIViewController、基本 Page)类。这里的复杂性通常出现在诸如以下问题中:
- 支持插件加载(它们应该使用 Assembly.Load 很容易工作,但有时并不像它应该那样容易)
- 弄清楚如何导航
- 弄清楚“墓碑”(对于桌面平台来说希望不是问题)
- 弄清楚在哪里存储和清除绑定(在其 bindingcontext 中)- 创建绑定总是比清除更容易。
- 根据需要移植单个插件....如何入手,需要考虑什么,已知的陷阱等。
这些是开始的基本步骤
我认为这不是一个很大的工作 - 特别是因为 v3 在可移植结构方面相当好!
对于“需要考虑什么”和“已知的陷阱”,抱歉,但我真的不知道 - 自 MvvmCross v1 以来,我实际上没有完全从头开始编写过一个。
如果您开始了这条路,请让我们在此线程上提出问题 - 这就是我们在 215 中为 unity 所尝试的。