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
作为参数传递