Xamarin bound Entry (double) путает десятичный символ при сохранении / извлечении в / из SQL базы данных (EF6) - PullRequest
1 голос
/ 07 марта 2020

Я новичок ie, и я создаю приложение с Xamarin Forms, где я сохраняю и получаю данные с помощью asp. net Web API с использованием EF6.

Моя система на немецком языке , поэтому десятичный знак является ",". И вот моя проблема:

У меня есть связанное поле ввода "высота":

XAML:

<Entry Placeholder="{helper:Translate Height}" Text="{Binding Height,Mode=TwoWay}" Keyboard="Numeric" Style="{StaticResource entryStyle}" >
                        <Entry.Behaviors>
                            <Behaviors:NumericEntry Double="True"/>
                        </Entry.Behaviors>
                    </Entry>

Модель:

 public class ProfileData : INotifyPropertyChanged
    {

        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(propertyName)));
        }
.
.
.
        private double? _height;
        public double? Height
        {
            get => _height;
            set
            {
                _height = value;
                OnPropertyChanged();
            }
        }
.
.
.
}

Привязка работает, но если я введу в поле значение, подобное 175,2, и поставлю точку останова на установщик в модели, то получится значение 1752 .... которое будет сохранено таким образом в БД (столбец с плавающей точкой) ). Если я ввожу значение, подобное 175.2, оно попадает в БД как 175,2 (обратите внимание на различные десятичные символы). Поэтому, если я получу значения из БД, в моем поле ввода будет 175,2, которое, если я сохраню снова, превратится, как указано выше, в 1752.

Это проблема Культурной информации? Я попытался, например, поиграть с TryParse и изменить информацию о культуре в app.xaml.cs. но потом мои рабочие дни тоже получают Engli sh, и формат даты меняется, чего я не хочу.

Может ли это быть проблемой веб-API и JSON?

Надеюсь, мне не нужно (поскольку я думаю, что это не может быть правильным решением) делать что-то вроде .replace(",",".") или подобное везде.

Редактировать

Поведение, которое я использую, происходит отсюда: https://github.com/xamarinhq/xamu-infrastructure/blob/master/src/XamU.Infrastructure/Behaviors/NumericValidationBehavior.cs

...