Я новичок 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