使用可本地化的格式字符串进行数据绑定

时间:2016-12-23 23:43:20

标签: android xamarin xamarin.android mvvmcross

我正在使用MvvmCross在Xamarin制作Android应用程序。

我的用户界面有一个搜索字段和一个按钮。我希望按钮能反映搜索字段中的内容。因此,如果搜索字段为SearchResponse response = client.prepareSearch("mongoindex") .setSearchType(SearchType.QUERY_AND_FETCH) .setQuery(boolQuery) .setFrom(0).setSize(60).setExplain(true) .execute() .actionGet(); ,我希望按钮说出Alamo Drafthouse,但Create "Alamo Drafthouse" Venue字符串应来自Create "x" Venue文件,以便可以对其进行本地化。< / p>

我目前的攻击计划是创建一个ValueConverter,它接受搜索词并进行格式化,使用ConvertParameter指定字符串资源的ID,所以我可以这样做:

strings.xml

其中<Button local:MvxBind="Text SearchTerm, Converter=FormatResource, ConvertParameter='create_view'" /> create_view中定义的字符串资源。

我想我应该问是否有更好的方法来做到这一点。有吗?

1 个答案:

答案 0 :(得分:1)

如果您希望模板字符串来自strings.xml(来自Android项目,而不是来自Core / PCL项目),您可以创建自己的名为FormatResourceConverter的转换器。

 public class FormatResourceConverter: IMvxValueConverter
 {
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
         //value would be your draft house
         //parameter would be a name of your string in strings.xml
         var stringValue = ... //get your string from Android string resources 
         return String.Format(stringValue, value);    
     }

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     {
         throw new NotImplementedException();
     }
 }

Here is a simple answer how to get string from Android resources in Xamarin