у нас есть проблемы с преобразователями в MvvmCross в связи с блоком управления EditText в Android:MvvmCross Android конвертер вызывает курсор прыгать
В нашем приложении, пользователь вставляет пользовательские данные. Мы должны сделать некоторые вычисления с этими данными в конвертере, а затем записать данные в нашей модели viewmodel.
Это работает, если пользователь не возвращает свою запись. Это означает, что если он использует обратную клавишу, значение будет правильно отредактировано, пока не достигнет последнего десятичного знака до «.». (например: 55,99, когда он достигает «55,9»). «.9» будет удалено правильно, но куросоры скачут оставшиеся «55». Как мы можем разрешить это раздражающее поведение?
ViewModel экстракт:
private Nullable mdValue1 = null;
public Nullable<decimal> Value1
{
get { return mdValue1; }
set
{
SetProperty(ref mdValue1, value);
}
}
private Nullable<decimal> mdValue2;
public Nullable<decimal> Value2
{
get { return mdValue2; }
set
{
SetProperty(ref mdValue2, value, nameof(Value2));
}
}
конвертер (упрощенный):
public class DecimalToStringValueConverter : MvxValueConverter<Nullable<decimal>, string>
{
protected override string Convert(Nullable<decimal> poValue, Type poTargetType, object poParameter, CultureInfo poCulture)
{
if (!poValue.HasValue)
{
return null;
}
return poValue.Value.ToString();
}
protected override Nullable<decimal> ConvertBack(string value, Type targetType, object parameter, CultureInfo culture)
{
if (string.IsNullOrWhiteSpace(value))
{
return null;
}
return decimal.Parse(value);
}
}
Конфигурация
Android Версия: 4.4/5.1/7
Платформа: Xamarin
Привет! Прежде всего, спасибо за ваше время! Вы нам очень помогли, мы довольно новичок в Xamarin. Теперь курсор работает.Другая проблема возникла с «WeakSubscribe». Он не может быть найден и отмечен красным. Есть ли сборка для использования? – Mephistopheles
«WeakSubscribe» доступен в разделе «MvvmCross.Platform.WeakSubscription», который был добавлен в [Mvvmcross 4.4.0.] (Https://github.com/MvvmCross/MvvmCross/commit/b2e67d8994859cd68d42fb87a287eb462a44ba49) Если вы на старшей вы можете вместо этого подписаться непосредственно на 'AfterTextChanged'. Я обновлю ответ, чтобы включить пример. – Plac3Hold3r
Теперь мы на 4.4, и это работает! Большое вам спасибо, очень ценю! – Mephistopheles