У меня есть текстовое поле со свойством text, привязанным к полю ItemCount. И я пытаюсь очистить это, если я получил неправильное значение. Но texbox не очищает. Помоги мне, пожалуйста. В чем моя ошибка?
TextBox в 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:
Я решил эту проблему самостоятельно. Я поместил свои проверки в конструкцию try catch и сделал "_ItemCount = null" в catch в реализации viewmodel. Итак, теперь он работает отлично.
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();
}
}
}