android - 使用可本地化的格式字符串进行数据绑定(bind)

标签 android xamarin xamarin.android mvvmcross

我正在使用 MvvmCross 在 Xamarin 中制作一个 Android 应用。

我的用户界面有一个搜索字段和一个按钮。我希望按钮反射(reflect)搜索字段中的任何内容。因此,如果搜索字段有 Alamo Drafthouse,我希望按钮显示 Create "Alamo Drafthouse"Venue,但是 Create "x"Venue字符串应来自 strings.xml 文件,以便可以对其进行本地化。

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

<Button local:MvxBind="Text SearchTerm, Converter=FormatResource, ConvertParameter='create_view'" />

其中 create_view 是在 strings.xml 中定义的字符串资源。

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

最佳答案

如果您希望模板字符串来自 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 .

关于android - 使用可本地化的格式字符串进行数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309000/

相关文章:

java - 扩展可序列化的地理点 - 无法读回对象

java - 如何在没有重复代码的情况下使用抽屉导航?

android - layout_gravity 上的动画

xamarin - RecyclerView点击事件

android - 设备字体大小

android - 如何在 Android 模拟器上运行 Xamarin UI 测试

ios - 快速库的 Xamarin.iOS 绑定(bind)

c# - 如何获取 Android 应用程序当前使用的堆大小?

xamarin.forms - 如何获取 Xamarin Android 的 Play 商店版本号

java - Xamarin Forms java.exe"退出代码 1 (ProGuard)