Прежде всего, мое приложение многоязычное, и оно выполняет некоторые математические вычисления в виде списка.
Это представление списка связано с наблюдаемой коллекцией с моделью. В модели внутри области установки у меня есть INotifyPropertyChanged для обновления пользовательского интерфейса.
С другой стороны, у меня есть класс поведения, который преобразует запятую в точку. Когда язык телефона - английский sh, проблем нет, но когда я меняю язык на немецкий, как вы знаете, настройки культуры устанавливают запятую в качестве разделителя по умолчанию, и проблема начинается. Поведение записи и INotifyPropertyChanged конфликтуют, и приложение вылетает.
Как я могу решить эту проблему?
Вот мой код:
public class NumericValidationBehavior : Behavior<Entry>
{
protected override void OnAttachedTo(Entry entry)
{
entry.TextChanged += OnEntryTextChanged;
base.OnAttachedTo(entry);
}
protected override void OnDetachingFrom(Entry entry)
{
entry.TextChanged -= OnEntryTextChanged;
base.OnDetachingFrom(entry);
}
private static void OnEntryTextChanged(object sender, TextChangedEventArgs args)
{
if (!string.IsNullOrWhiteSpace(args.NewTextValue))
{
bool isValid = args.NewTextValue.ToCharArray().All(x => char.IsDigit(x));
if (!isValid)
{
((Entry)sender).Text = args.NewTextValue.Replace(",", ".");
//if i remove this line, the app doesnt crash...
}
}
else
{
((Entry)sender).Text = "0";
}
}
}
private double stockTotal;
public double StockTotal
{
get
{
return stockTotal;
}
set
{
stockTotal = value;
PropertyChanged("StockTotal");
//if i remove this line, the app doesnt crash...
}
}
видео показывает более подробную информацию , введите описание ссылки здесь
Я загружаю видео ... Вы можете посмотреть проблему