2017-07-27 50 views
0

我正在使用I18n便攜式NuGet軟件包進行國際化(參見http://xleon.net/localization/xamarin/pcl/share-locales/i18n/portable/dotnet/2017/02/09/easy-and-cross-platform-localization-for-xamarin-and-dotnet/),在VS 2017中使用Xamarin格式的跨平臺應用程序。到目前爲止,我得到了一切工作,除了一件事。Xamarin格式:I18n-portable casting error

不幸的是,我被困在最後一部分 - 根據包自述 - 我需要在baseviewmodel上創建一個代理對象。我只是不知道在這裏做什麼,網上沒有任何文檔似乎幫助我。

什麼/哪裏是baseviewmodel?!我的示例PCL解決方案中的App.xaml.cs是否在?這是該包的作者提出了整合代碼:

錯誤CS0266:類型「I18NPortable.II18N

public abstract class BaseViewModel 
{ 
    public I18N Strings => I18N.Current; // causes error, see below 
} 

代碼試圖將其整合爲一個新的類時,上述導致錯誤「不能被暗示轉換爲」I18NPortable.I18N「。已經存在一個明確的轉換(轉換缺失?)。

感謝您的每一個提示。

回答

0

對於BaseViewModel,您將需要使用依賴於ViewModels的MVVM框架。然後創建一個自定義的基類,其他視圖模型繼承自其實現的基類。這不是Xamarin給你帶來的東西,因爲使用Xamarin Forms時MVVM不是必須的,並且有許多MVVM框架。

你得到的錯誤基本上說,調用I18N.Current會返回一個類型爲II18N的對象,該對象是一個您正在分配給顯式類型的接口。你可以嘗試改變它:

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

好的,謝謝你的信息。你建議的代碼更改ehelped消除錯誤,但沒有解決問題 - 翻譯的字符串仍然不顯示在Xamarin形式gui中。猜猜我會繼續尋找與Xamarin開箱即用的東西。不想把另一個框架放在最前面。奮鬥已經;) –

+0

它看起來像I18N插件應該工作。雖然我沒有嘗試過。也許它只是你錯過了一個簡單的步驟?嘗試在Github上查看他們的示例,或許他們可以幫助你。 –

+0

是的,它適用於其他人,並且應該易於使用,但需要解決方案中的其他元素,例如MVVM,我現在無法處理(C#和Xamarin形成新手)。 –