windows-phone-7 - tag - picard setup 1.4 2
Conversión de valor de texto dinámico de MvvmCross (1)
Está en lo correcto: el MvxLanguageConverter predeterminado que se usa en ese enlace realmente solo está disponible para texto estático simple.
Para situaciones más complicadas, necesitará construir su propio convertidor para cada caso, pero esperamos que algunos de ellos sean reutilizables.
Como ejemplo inicial, vea cómo el ejemplo de la conferencia muestra las horas de tweet usando 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);
}
}
Esto se usa en axml de Android como en 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''}}"
/>
Por lo que sé, el complemento de localización MvvmCross proporciona un motor "estático". Utilizo el siguiente enlace como ejemplo de la Conferencia:
local:MvxBind="{''Text''{''Path'':''TextSource'',''Converter'':''Language'',''ConverterParameter'':''SQLBitsXApp''}}"
Quiero ser capaz de cambiar SQLBitsXApp
a SQLBitsXApp2
forma dinámica. El objetivo es encontrar el texto localizado relacionado con días enum.
¿Hay alguna manera de hacer esto de forma dinámica?