我试图将值限制为Entry字段到某个值。我尝试了以下内容。 当用户输入任何大于最大限制的数字时,字段设置为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()导致应用程序崩溃,即当字段设置为零时,触发OnPropertyChanged()并且不允许再次输入输入。
答案 0 :(得分:0)
也许尝试这样的事情,只需确保在调用'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();
}
}
}
答案 1 :(得分:-1)
嗯,你是绑定&#34; getHeight&#34;,不是&#34; GetHeight&#34;到了视野。
如果要更新该绑定的视图,则必须更改OnPropertyChanged()调用以更新正确的绑定。