cas*_*las 1 xamarin.android mvvmcross xamarin
我的名单中有以下列表viewModel.但是为了支持多种语言,我希望这个字符串来自string.xml.可能吗?
private List<Thing> _items = new List<Thing>()
{
new Thing("Open"),
new Thing("Close"),
};
Run Code Online (Sandbox Code Playgroud)
如果您正在构建原生的Android和iOS应用程序,您可以拥有该界面:
public interface ILocalization {
string GetLocalizedString(string key);
}
Run Code Online (Sandbox Code Playgroud)
在Android和iOS项目中,您有一个实现接口的类,Android:
public class LocalizationAndroid : ILocalization
{
public Activity context;
public LocalizationAndroid(Activity _context) {
context = _context;
}
public string GetLocalizedString(string key)
{
var resourceId = (int)typeof(Resource.String).GetField(key).GetValue(null);
return context.GetString(resourceId);
}
}
Run Code Online (Sandbox Code Playgroud)
iOS版:
public class LocalizationIOS : ILocalization
{
public string GetLocalizedString(string key)
{
return NSBundle.MainBundle.LocalizedString(key, null);
}
}
Run Code Online (Sandbox Code Playgroud)
然后将类的一个实例(在视图中实例化)传递给视图模型以获取字符串.字符串必须放在iOS项目的Localizable.strings文件和Android项目的Strings.xml文件中.
在ViewModel上你会得到:
public class MyViewModel
{
public ILocalization LocalizationObject;
private List<Thing> _items;
public MyViewModel(ILocalization _localizationObject)
{
LocalizationObject = _localizationObject;
_items.Add(new Thing(LocalizationObject.GetLocalizedString("Open")));
_items.Add(new Thing(LocalizationObject.GetLocalizedString("Closed")));
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到你为Strings.xml(Android)和Localizable.strings(iOS)上的"Open"和"Closed"键添加了两个字符串"Open"和"Closed"这一事实.
| 归档时间: |
|
| 查看次数: |
733 次 |
| 最近记录: |