我应该从哪里开始支持 mvvmcross Gtk?



我的跨平台应用程序中需要 Gtk 平台支持。该应用程序是使用 mvvmcross 构建的。我检查了一下,没有发现框架的任何GTK"平台"的现有实现。我有时间研究它。我应该从哪里开始?有哪些陷阱?

更新我看到你在这里发表评论 https://github.com/MvvmCross/MvvmCross/pull/2697 最好将聊天保持在问题中而不是 SO。

你看过 Twitter convo 吗?然后链接到这个 GitHub 问题

从Slodge(Stuart)的评论中,他给出了MVVMCross 3.1所需的基本步骤:

有些人以前做过这个

我 - 对于这里的主要平台

@deapsquatter 和 @loqu8/Tim for Mac

@et-nowis for Unity/Ngui - https://github.com/et-nowis/mvx-unity-ngui/blob/master/Assets/External/MvvmCross/Cirrious/Cirrious.MvvmCross.Binding.Unity/MvxUnityBindingBuilder.cs

现在 3.1 已经相当稳定了,涉及的主要步骤是完整的 平台是:

  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
  2. 构建绑定库 - 从特定于平台开始 BindingBuilder - 每个基本上只是添加自定义的"绑定模式" -目标工厂 - 用于平台。请参阅以下示例:
    • 机器人 - https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs
    • 触摸 - 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
    • 团结 - https://github.com/et-nowis/mvx-unity-ngui/blob/master/Assets/External/MvvmCross/Cirrious/Cirrious.MvvmCross.Binding.Unity/MvxUnityBindingBuilder.cs
  3. 构建 Mvvm 平台层。这通常只涉及添加 特定于平台的设置、演示器(又名导航服务)和 基本页面(例如基本活动、基本 UIViewController、基本页面) 类。这里的复杂性通常包括:
    • 支持插件加载(它们应该很容易使用Assembly.Load工作,但有时它并不像它应该的那样容易)
    • 研究如何导航
    • 解决"逻辑删除"(希望不是桌面平台的问题)
    • 确定存储位置和清除绑定的位置(在其绑定上下文中) - 创建绑定总是比清除更容易 他们起来了。
  4. 根据需要移植单个插件。如何开始, 要考虑什么,已知的陷阱等。

这些是入门的基本步骤

我不认为这是一项大工作 - 特别是因为 v3 很漂亮 在便携式结构方面很好!

对于"要考虑什么"和"已知陷阱"对不起,但我真的没有 想法 - 自 MvvmCross v1 以来,我还没有真正写过一个"从新"和 这在当时是一个非常不同的过程。

保持开放,如果你确实开始走这条路,那么请让我们 只需在此线程上提问 - 这就是我们尝试做的事情 215 为了团结。

您必须使这些步骤适应您正在使用的版本。此外,上面提供的链接将在 3.1 版本中断开。因此,您必须将它们映射到较新的等效项。

除此之外,我知道最近添加了Tizen,可以查看这些是如何添加的,以了解如何进行

。我认为这是可能的,但这是一项艰巨的任务,祝你好运!

最新更新