gpt4 book ai didi

windows-phone-7 - MvvmCross动态文本值转换

转载 作者:行者123 更新时间:2023-12-04 07:11:44 25 4
gpt4 key购买 nike

据我所知,MvvmCross 本地化插件提供“静态”引擎。我使用以下绑定(bind)作为来自 session 的示例:

local:MvxBind="{'Text'{'Path':'TextSource','Converter':'Language','ConverterParameter':'SQLBitsXApp'}}"

我希望能够动态地将 SQLBitsXApp 更改为 SQLBitsXApp2。目标是找到与 days 枚举相关的本地化文本。

有没有办法动态地做到这一点?

最佳答案

您是对的 - 该绑定(bind)中使用的默认 MvxLanguageConverter 实际上仅适用于简单的静态文本。

对于更复杂的情况,您需要为每种情况构建自己的转换器 - 但希望其中一些可以重复使用。

作为起始示例,请查看 session 示例如何使用 TimeAgoConverter.cs 显示推文时间

public class TimeAgoValueConverter
: MvxBaseValueConverter
, IMvxServiceConsumer<IMvxTextProvider>
{
private IMvxTextProvider _textProvider;
private IMvxTextProvider TextProvider
{
get
{
if (_textProvider == null)
{
_textProvider = this.GetService<IMvxTextProvider>();
}
return _textProvider;
}
}

public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var when = (DateTime)value;

string whichFormat;
int valueToFormat;

if (when == DateTime.MinValue)
{
whichFormat = "TimeAgo.Never";
valueToFormat = 0;
}
else
{
var whenUtc = when.ToUniversalTime();
var difference = (DateTime.UtcNow - whenUtc).TotalSeconds;
if (difference < 30.0)
{
whichFormat = "TimeAgo.JustNow";
valueToFormat = 0;
}
// ... etc
}

var format = TextProvider.GetText(Constants.GeneralNamespace, Constants.Shared, whichFormat);
return string.Format(format, valueToFormat);
}
}

这在 Android axml 中使用,如 https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ListItem_Tweet.xml :

<TextView
android:id="@+id/TimeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dip"
android:textColor="@color/icongrey"
local:MvxBind="{'Text':{'Path':'Item.Timestamp','Converter':'TimeAgo'}}"
/>

关于windows-phone-7 - MvvmCross动态文本值转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com