我正在尝试将@string/something
传递给值转换器,以便我可以使用它来格式化输出,所以说我有一个DateTime
值,我希望传递类似{{1}的内容转到ValueConverter。
问题是,上面的文字是可翻译的,所以它来自任何给定语言的"Signup Date: {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" />
。我该怎么办?
答案 0 :(得分:2)
您可以使用值字符串资源名称作为参数,在资源中查找其ID并通过此ID从资源中获取值。
public class FriendlyDateValueConverter : MvxValueConverter<DateTime, string>
{
protected override string Convert(DateTime value, Type targetType, object parameter, CultureInfo culture)
{
var param = parameter as string;
if (string.IsNullOrEmpty(param))
{
return string.Empty;
}
var globals = MvvmCross.Platform.Mvx.Resolve<IMvxAndroidGlobals>();
var res = globals.ApplicationContext.Resources;
var id = res.GetIdentifier(param, "string", globals.ApplicationContext.PackageName);
// id=0, if the resource could not be found -> add some error handling
var format = res.GetString(id);
return string.Format(format, value);
}
}
<强>用法强>
<TextView
local:MvxBind="Text SignupDate, Converter=FriendlyDate, ConverterParameter='release_date'"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="5"
android:paddingTop="8dp" />
注意:传递'release_date'
而不是@string/release_date
作为参数。