我正在使用 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/