【问题标题】:Xamarin: MVVMCross infoXamarin: MVVM交叉信息
【发布时间】:2013-05-15 11:39:06
【问题描述】:

在 Xamarin 跨平台应用程序开发中适配 MVVMCross 框架,我们在here 中拥有 PCL(包含模型和视图模型)和视图(针对每个平台)。

a) Xamarin.mobile(用于获得单组 API 访问权限)位于何处?我认为在 PCL 内部。但是,我看到 Xamarin.mobile 的不同二进制文件(例如:Android 和 IOS),我们是否将所有 Xamarin.mobile 库都放在 PCL 中?都是同名的,不会有冲突吧?

b) 我们将访问蓝牙之类的代码保存在哪里(Xamarin.mobile 中不可用)?使用 MVVMCross 解耦了视图和业务逻辑,那么在事件发生后(btn 点击)创建视图项的所有代码都驻留在视图中吗?

c) 我们在哪里可以使用适应 MVVMCross 的条件编译?我猜在模型中,但它是仅用于文件访问还是也可以通过将其放置在 PCL 上来根据目标平台显示视图项(Android 上的 toast 消息)?

(如果不合适,请原谅,只是收集了一些关于 MVVMCross 和 Xamarin.mobile 的信息,并有一些推理/困惑)

谢谢!

问候, 索拉夫

【问题讨论】:

  • 请尝试对每个问题提出一个问题 - 这有助于人们(如您自己)稍后寻找答案。这真的是 3 个问题。谢谢:)

标签: mvvm xamarin mvvmcross portable-class-library xamarin.mobile


【解决方案1】:

a) Xamarin.mobile(用于获得单组 API 访问权限)位于何处?我认为在 PCL 内部。但是,我看到 Xamarin.mobile 的不同二进制文件(例如:Android 和 IOS),我们是否将所有 Xamarin.mobile 库都放在 PCL 中?都是同名的,不会有冲突吧?

Xamarin.Mobile 不是可移植代码 - 不能直接从 PCL 调用。

对于许多 Xamarin.Mobile 功能(以及许多 Xamarin.Mobile 未涵盖的功能),MvvmCross 提供插件 - 您可以在 https://www.nuget.org/packages?q=mvvmcross 中看到其中的一些功能

对于 X.M 具有但我们尚未包含的其余几个方法 - 例如联系人查找 - 然后您可以:

  • 通过编写可移植接口(外观)访问 Xamarin.Mobile 函数,通过该接口访问它们
  • 编写一个新插件来实现它们

有关插件的更多信息:

b) 我们将访问蓝牙之类的代码保存在哪里(Xamarin.mobile 中不可用)?

通常这与上面的方法相同。例如,对于蓝牙,请查看 Sphero 示例:

使用 MVVMCross 解耦了视图和业务逻辑,那么在事件发生后(btn 点击)创建视图项的所有代码都驻留在视图中吗?

是的 - 如果它是“视图关注点”,那么它属于视图(这与任何 Mvvm 代码相同)

c) 我们在哪里可以使用适应 MVVMCross 的条件编译?

我尽量不使用“条件编译”,包括#ifpartial classes。有时我会在特定于插件平台的模块中使用它,但通常我会尝试使用继承或抽象来代替——原因是因为我经常使用“重构”和“单元测试”等工具,而条件编译根本不会使用这些。

有关使用 PCL 而非文件链接和其他基于项目的技术的好处(和坏处)的更多信息,请参阅What is the advantage of using portable class libraries instead of using "Add as Link"?

【讨论】:

  • 非常感谢我正在寻找的准确答案。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多