0

我试图将输入字段中的值限制为某个值。我尝试了以下。当用户输入任何大于最大限制的数字时,字段设置为 0。

但是,当用户按下退格键或尝试输入任何新数字时,应用程序会崩溃。

查看型号:

private int? getHeight = null;
    public int? GetHeight
    {
      get { return getHeight; }
      set
      {
        if (!getHeight.HasValue || (!getHeight.Equals(value) && value.Value <= 250))
    {
      getHeight = value;

    }
    else
    {
      getHeight = 0;
    }

    OnPropertyChanged();
      }
    }

看法:

 heightEntry = new Entry
      {
        Keyboard = Keyboard.Numeric
      };
      heightEntry.SetBinding(Entry.TextProperty, nameof(MyViewModel.GetHeight), converter: new NullableIntConverter());
      heightEntry.SetBinding(Entry.IsEnabledProperty, nameof(MyViewModel.UiElementsEnabled));
      optionsGrid.Children.Add(heightEntry, 1, 1);

由于 OnPropertyChanged() 导致 App 崩溃,即当字段设置为零时,触发 OnPropertyChanged() 并且不允许再次输入输入。

4

2 回答 2

1

也许尝试这样的事情,只需确保在调用“onpropertychange”之前该值不为空。

        private int? getHeight = null;

        public int? GetHeight
        {
            get { return getHeight; }
            set
            {
                if (!getHeight.HasValue || (!getHeight.Equals(value) && value.Value <= 250))
                {
                    getHeight = value;
                }
                else
                {
                    getHeight = 0;
                    value = 0; //override the value
                }

                // validate against our value for the property change.
                if (value.HasValue && value != null)
                {
                    OnPropertyChanged();
                }
            }
        }
于 2017-07-12T11:01:46.190 回答
-1

好吧,您将“getHeight”而不是“GetHeight”绑定到视图。

如果要更新该绑定的视图,则必须更改 OnPropertyChanged() 调用以更新正确的绑定。

于 2017-07-12T09:43:13.627 回答