Xamarin形式:I18n-便携式铸造错误

时间:2017-07-27 12:58:30

标签: xamarin.forms internationalization

我正在使用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”。已经存在显式转换(转换缺失?)。

感谢您的每一个提示。

1 个答案:

答案 0 :(得分:0)

对于BaseViewModel,您将需要使用依赖于ViewModel的MVVM框架。然后,您可以创建一个自定义基类,您的其他视图模型将继承该基类来实现此目的。 Xamarin不是开箱即用的,因为在使用Xamarin Forms时MVVM不是必须的,并且有很多MVVM框架。

您获得的错误基本上表示对I18N.Current的调用会返回类型为II18N的对象,这是一个您要分配给显式类型的接口。您可以尝试将其更改为:

public abstract class BaseViewModel
{
    public II18N Strings => I18N.Current;
}