private void txtNumericValue_PreviewKeyDown(object sender, KeyEventArgs e)
{
KeyConverter converter = new KeyConverter();
string key = converter.ConvertToString(e.Key);
if (key != null && key.Length == 1)
{
e.Handled = Char.IsDigit(key[0]) == false;
}
}
Это самая простая техника, которую я нашел для достижения этой цели. Недостатком является то, что контекстное меню TextBox по-прежнему позволяет использовать не числовые значения с помощью вставки. Чтобы быстро решить эту проблему, я просто добавил атрибут / свойство: ContextMenu = "{x: Null}" в TextBox, тем самым отключив его. Не идеально, но для моего сценария этого будет достаточно.
Очевидно, что вы можете добавить еще несколько ключей / символов в тест, чтобы включить дополнительные допустимые значения (например, '.', '$' И т. Д ...)