Xamarin 将Android可翻译字符串传递给ValueConverter

Xamarin 将Android可翻译字符串传递给ValueConverter,xamarin,xamarin.android,mvvmcross,monocross,Xamarin,Xamarin.android,Mvvmcross,Monocross,我试图将一个@string/something传递给值转换器,这样我就可以使用它来格式化输出,所以假设我有一个DateTime值,我想将类似于“注册日期:{0}”的内容传递给值转换器 问题是,上面的文本是可翻译的,因此它来自任何给定语言的strings.xml文件。到目前为止,我尝试了以下方法: <TextView local:MvxBind="Text SignupDate, Converter=FriendlyDate, ConverterParameter=@string/re

我试图将一个
@string/something
传递给值转换器,这样我就可以使用它来格式化输出,所以假设我有一个
DateTime
值,我想将类似于
“注册日期:{0}”的内容传递给值转换器

问题是,上面的文本是可翻译的,因此它来自任何给定语言的
strings.xml
文件。到目前为止,我尝试了以下方法:

<TextView
   local:MvxBind="Text SignupDate, Converter=FriendlyDate, ConverterParameter=@string/release_date"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:ellipsize="end"
   android:maxLines="5"
   android:paddingTop="8dp"
   style="@style/WhiteParagraphText" />


注意
ConverterParameter=@string/release\u date
。如何执行此操作?

您可以使用值转换器执行此操作,该转换器将字符串资源名称作为参数,在资源中查找其id,并通过此id从资源中获取值

公共类友好的DateValueConverter:MvxValueConverter
{
受保护的重写字符串转换(日期时间值、类型targetType、对象参数、CultureInfo区域性)
{
var param=作为字符串的参数;
if(string.IsNullOrEmpty(param))
{
返回字符串。空;
}
var globals=MvvmCross.Platform.Mvx.Resolve();
var res=globals.ApplicationContext.Resources;
var id=res.GetIdentifier(参数,“字符串”,globals.ApplicationContext.PackageName);
//id=0,如果找不到资源->添加一些错误处理
var format=res.GetString(id);
返回string.Format(格式、值);
}
}
用法


注意:将
'release\u date'
而不是
@string/release\u date
作为参数传递