Xamarin - MVVM跨数据绑定资源

时间:2016-06-03 13:55:52

标签: data-binding xamarin xamarin.android android-resources

我正在Xamarin开始一个跨平台的项目,我有些怀疑是阻止开发的。最初该项目仅适用于Android和UWP,但在不久的将来它也适用于iOS。

问题: 1.我希望集中所有资源(“Name”,“Age”等标签的字符串)以便在3个平台中使用,当您需要编辑此字符串时,将对所有项目进行更改。有什么更好的方法呢?我需要在所有平台上的UI上进行DataBinding

[Xamarin.Android]我研究和听说过像“MVVMCross”这样的东西,但这迫使我扩展我自己的MVVMCross的活动,例如,uencessito采取Android一个ActionBar,为此我需要扩展一个类但是,扩展“AppCompatActivity”只能扩展活动,因此无法扩展MVVMCross的活动。

视频:https://youtu.be/_DHDMNB_IeY?list=PLR6WI6W1JdeYSXLbm58jwAKYT7RQR31-W

像:

public abstract class BaseActivity: AppCompatActivity // (with MVVMCross use MvxAppCompatActivity )
public class MainActivity: BaseActivity // (with MVVMCross use MvxActivity)

  1. 对于资产,正确的方法是将资产保留在项目中,如果它们是通用的,则通过PCL?我问这个是因为Android,iOS和UWP上的资产尺寸不同。什么是好的做法?
  2. 提前致谢!

1 个答案:

答案 0 :(得分:1)

对于位于PCL中的字符串资源和翻译,我建议使用此库(实现起来非常简单): https://github.com/xleon/I18N-Portable/,但您也可以尝试从PCL中实施Resx文件。

将MvvmCross添加到您的项目只是为了本地化将是疯狂的。 但是如果您已经在项目中使用了MvvmCross,那么有一个翻译插件,它使用PCL级别的json文件:https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins#jsonlocalisation

对于问题2:您可以在PCL中嵌入资源并从平台项目(ios / android / etc)加载它们,但它不会像加载平台资源那样明显(您需要额外的代码)。因此,您的资产和图像通常会在不同的分辨率(不同的分辨率,dpi和设计风格指南)中发生变化,因此尝试将它们放在一起可能会使事情变得复杂而不是帮助。

关于使用特定的MvvmCross活动:这就是它的工作方式。