Проблема с вводом чисел с десятичной запятой в приложении Xamarin.Forms

233
02 февраля 2020, 11:20

В приложении Xamarin.Forms под Android необходимо вводить и отображать числа с одним знаком после запятой.

    <Entry Text="{Binding Path=FlourWeight, Mode=TwoWay, StringFormat='{}{0:F1}'}" 
WidthRequest="90" Keyboard="Numeric" Completed="Entry_Completed"/>

Проблема в том, что при помещении курсора в это поле и попытке ввода любой цифры поле заполняется большим количеством нулей до запятой и корректный ввод в это поле невозможен. К полю привязано свойство типа double. Подскажите, как корректно реализовать ввод чисел с десятичной запятой в приложении Xamarin.Forms

public class Recipe : INotifyPropertyChanged
{
    // Поля
    private int id;
    private string name;
    private double flourWeight;
    private double humidity;
    // Свойства
    public int Id                                   
    {
        get { return id; }
        set { id = value; OnPropertyChanged("Id"); }
    }         
    public string Name                             
    {
        get { return name; }
        set { name = value; OnPropertyChanged("Name"); }
    }                
    public double FlourWeight                      
    {
        get { return flourWeight; }
        set { flourWeight = value; OnPropertyChanged("FlourWeight"); }
    }         
    public double Humidity                        
    {
        get { return humidity; }
        set { humidity = value; OnPropertyChanged("Humidity"); }
    }            

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propName));
    }
}

И конструктор страницы:

public partial class AddRecipePage : ContentPage
{
    private Recipe SelectedRecipe;  
    private bool IsNewRecipe;
    public AddRecipePage(Recipe recipe, bool isNewRecipe)
    {
        InitializeComponent();
        SelectedRecipe = recipe;
        IsNewRecipe = isNewRecipe;
        this.BindingContext = SelectedRecipe;
    }
}

При вводе например цифры 5 вот такое сообщение в логе: [0:] Binding: 50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0 can not be converted to type 'System.Double'

Отключил проверки текста: IsSpellCheckEnabled="False" IsTextPredictionEnabled="False" Ничего не изменилось.

READ ALSO
Проблема с базой данных SQLite в приложении Xamarin.Forms

Проблема с базой данных SQLite в приложении Xamarin.Forms

В приложении XamarinForms под Android для хранения данных используется база данных SQLite

221
Обработка исключений C#

Обработка исключений C#

Решил написать калькулятор на C#, нужно форматировать строку в TextBox в int, при этом обработать исключение при вводе алфавитаНо при этом всё равно...

213
Составление сложного SQL запроса

Составление сложного SQL запроса

Использую ms sqlПроект asp

192