我有一个文本框,其文本属性绑定在字段ItemCount上。如果我得到错误的值,我会尝试清除它。但是texbox不清楚。请帮帮我。我怎么了?
xaml中的文本框:
<TextBox Margin="5 15">
<TextBox.Text>
<Binding Path="ItemCount" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
在viewmodel中实现绑定:
private int? _ItemCount;
public int? ItemCount
{
get { return _ItemCount; }
set
{
if (value != _ItemCount)
{
if (value < 0)
{
_ItemCount = null;
throw new ApplicationException("Количество пластин не может быть отрицательным");
}
else if (value > ItemAmount)
{
_ItemCount = null;
throw new ApplicationException("Количество пластин не может превышать остаток");
}
else
{
_ItemCount = value;
}
NotifyPropertyChanged();
}
}
}
UPD: 我自己解决了这个问题。我将检查放入尝试catch构造中,并在viewmodel实现的catch中使“ _ItemCount = null”。因此,它现在可以完美运行。
private int? _ItemCount;
public int? ItemCount
{
get { return _ItemCount; }
set
{
if (value != _ItemCount)
{
try
{
if (value < 0)
{
throw new ApplicationException("Количество пластин не может быть отрицательным");
}
else if (value > ItemAmount)
{
throw new ApplicationException("Количество пластин не может превышать остаток");
}
else
{
_ItemCount = value;
}
}
catch (ApplicationException)
{
MessageBox.Show("kek");
_ItemCount = null;
}
NotifyPropertyChanged();
}
}
}