Атрибуты проверки / атрибуты метаданных здесь не помогут, потому что ошибка происходит в элементе управления, а не в свойстве.
Элемент управления не может вызвать установщик типа int
(или любого другого числового типа), поскольку строковое значение не может быть приведено.
Я также хотел бы знать, что вы можете изменить сообщение об ошибке по умолчанию ...
Возможный обходной путь - использовать пользовательский TextBox, который допускает только числовой ввод, который выглядит примерно так:
public class NumericTextBox : TextBox
{
public NumericTextBox()
{
this.KeyDown += new KeyEventHandler(NumericTextBox_KeyDown);
}
void NumericTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back || e.Key == Key.Shift || e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.Delete)
return;
if (e.Key < Key.D0 || e.Key > Key.D9)
{
if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
{
e.Handled = true;
}
}
}
}