【问题标题】:Using Xamarin.Forms in an originally non-Xamarin.Forms project在最初的非 Xamarin.Forms 项目中使用 Xamarin.Forms
【发布时间】:2016-05-03 00:20:04
【问题描述】:

我继承了最初在没有 Xamarin.Forms 的情况下编写的应用程序的维护和开发,通过平台特定项目和我的业务共享项目以传统方式为 Android 和 iOS 执行 UI 层逻辑。

鉴于大多数应用程序屏幕都相当简单,并且我花费大量时间来处理特定于平台的 UI 代码,我想问一下是否有人有将 Xamarin.Forms 集成到应用程序中的经验最初未使用 Xamarin.Forms 的项目。

我想知道是否可以用 Xamarin.Forms 替换特定屏幕,或许可以通过在特定 Android Activity 或 iOS 屏幕中手动托管它们。

我想首先将下一个功能屏幕集成为共享的 Xamarin.Forms“页面”。

以前有人做过这样的事吗?

【问题讨论】:

  • 有趣的问题。我最近做了相反的事情,在表单中重新创建了非表单应用程序的所有简单屏幕,并将更复杂的屏幕附加为自定义渲染器。这对你来说是一个选择吗?
  • 目前还不能进行全面重构,但可以进行滚动重构。这就是为什么我想在 XF 而不是原生中实现简单的新增功能。我们说的是一种简单的带有搜索框和按钮的列表视图。屏幕并没有真正以任何复杂的方式相互交互。

标签: xamarin.ios xamarin.android xamarin.forms


【解决方案1】:

由于重新设计了应用程序,我们已经这样做了。我们使用 MvvmCross 和本机 UI 开发了该应用程序,并移至 Xamarin.Forms。我们丢弃了所有视图,但保留了 ViewModel。这意味着:如果 UI 层与您的 ViewModel 层解耦(使用数据绑定),那么完全切换应该很容易。

我不建议混合表单和原生活动/视图控制器,因为正确处理导航可能会很痛苦(尤其是在 android 下)。如果一个屏幕上有一些复杂的东西,你应该把它移动到一个带有自定义渲染器的自定义元素中。

为了混合,有两个极简的例子:

【讨论】:

  • 遗憾的是,该应用程序离正确的 MVC/MVVM 实现还很远,因为意大利面条代码可以接受它。就我而言,主应用程序实际上只是一个集线器,它调用与应用程序其余部分几乎没有交互的其他活动。而且绝对没有一个是复杂的,这就是为什么 XF 会成为主要候选人的原因。
  • 然后看看链接的例子。如果您的页面真的是独立的,那么它可能会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2016-07-23
  • 2016-11-22
  • 1970-01-01
  • 2019-12-21
相关资源
最近更新 更多