Ответ 1
Валидация терпит неудачу, поскольку она не может преобразовать пустую строку в нулевое целое число. Установите TargetNullValue в string.empty на Binding, и он преобразует пустую строку в нуль, которая будет действительна.
У меня есть привязка данных в текстовом поле к обнуляемому int через код. Если я удалю данные из текстового поля, это даст мне ошибку проверки (красная рамка вокруг него).
Вот мой код привязки:
ZipBinding = new Binding("Zip");
ZipBinding.Source = Address;
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding);
public Int32? Zip { get { ... } set { ... } }
Он четко обозначен как Nullable, так почему WPF хочет дать мне вопрос проверки, когда я очищаю текстовое поле?
Валидация терпит неудачу, поскольку она не может преобразовать пустую строку в нулевое целое число. Установите TargetNullValue в string.empty на Binding, и он преобразует пустую строку в нуль, которая будет действительна.
Пустой TextBox!= null.
Возможно, вам придется подстроить ValidationRule для размещения пустых строк в качестве записей. Или вы можете создать конвертер, чтобы принимать пустые строки и преобразовывать их в null.