我正在使用VS 2017中的Xamarin表单开发跨平台应用程序,使用I18n便携式NuGet-Package进行国际化(请参阅http://xleon.net/localization/xamarin/pcl/share-locales/i18n/portable/dotnet/2017/02/09/easy-and-cross-platform-localization-for-xamarin-and-dotnet/)。到目前为止,我得到了一切,除了一件事。
不幸的是,我被困在最后一部分 - 根据包自述文件 - 我需要在baseviewmodel上创建一个代理对象。我只是不知道该怎么做,网上的文档似乎对我没有帮助。
baseviewmodel是什么/在哪里?!它在我的示例PCL解决方案的App.xaml.cs
中吗?这是包的作者建议集成的代码:
public abstract class BaseViewModel
{
public I18N Strings => I18N.Current; // causes error, see below
}
上述代码在尝试将其集成为新类时会导致错误:
错误CS0266:类型“I18NPortable.II18N”无法隐式转换为“I18NPortable.I18N”。已经存在显式转换(转换缺失?)。
感谢您的每一个提示。
答案 0 :(得分:0)
对于BaseViewModel
,您将需要使用依赖于ViewModel的MVVM框架。然后,您可以创建一个自定义基类,您的其他视图模型将继承该基类来实现此目的。 Xamarin不是开箱即用的,因为在使用Xamarin Forms时MVVM不是必须的,并且有很多MVVM框架。
您获得的错误基本上表示对I18N.Current
的调用会返回类型为II18N的对象,这是一个您要分配给显式类型的接口。您可以尝试将其更改为:
public abstract class BaseViewModel
{
public II18N Strings => I18N.Current;
}