Поведение входа в Xamarin и аварийное завершение INotifyPropertyChanged - PullRequest
0 голосов
/ 21 марта 2020

Прежде всего, мое приложение многоязычное, и оно выполняет некоторые математические вычисления в виде списка.

Это представление списка связано с наблюдаемой коллекцией с моделью. В модели внутри области установки у меня есть 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...

  }
}

видео показывает более подробную информацию , введите описание ссылки здесь

Я загружаю видео ... Вы можете посмотреть проблему

1 Ответ

0 голосов
/ 22 марта 2020

Я понизил версию XamarinForms с 4.5 до 4.3.0.991221.

Затем я удалил класс NumericValidationBehavior. Сейчас работает.

...