По моему опыту, Xamarin - это боль с десятичным отображением. Вы заканчиваете тем, что вводите любую сторону десятичной точки, и ее поведение никогда не является последовательным.
Я считаю, что гораздо проще, когда ViewModel предоставляет недесятичное целочисленное значение и использует преобразователь значения для отображения его в виде десятичной дроби .
например
<Label x:Name="CpvValueText" Text="{Binding ScaledValue, Mode=OneWay, Converter={x:StaticResource DecimalConverter}}" />
...
/// <summary>
/// This helper class converts integer values to decimal values and back for ease of display on Views
/// </summary>
public class DecimalConverter : IValueConverter
{
/// <inheritdoc />
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (null == value)
{
return 0;
}
var dec = ToDecimal(value);
return dec.ToString(CultureInfo.InvariantCulture);
}
/// <inheritdoc />
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var strValue = value as string;
if (string.IsNullOrEmpty(strValue))
{
strValue = "0";
}
return decimal.TryParse(strValue, out var result) ? result : 0;
}
}