Можно ли запретить ввод символов (кроме числовых и точки) в окне WPF, не применяя при этом обработчик события?

я новичок в разработке WPF-приложений. Вопрос сам дан в заголовке. Необходимо чтобы при вводе в ячейку таблицы пользователь мог вводить только числа. Подсветка ячейки красным тоже не подойдет, нужно прям ограничение вводимых символов. Можно ли это реализовать без затрагивания файла xaml.cs?


Ответы (1 шт):

Автор решения: Mikhail

У меня на avalonia реализована данная функция (wpf подобное), я привязывал к свойству текста переменную, и в сеттере делал обработку данных, самое главное это сделать до this.RaiseAndSetIfChanged (аналог INotifyPropertyChange), чтобы не символ даже не появлялся на милисикунду. У меня тут строковая стринговая переменная тк пользователь может вводить и текст и числа

     public string? AutoNumInitValue
        {
            get => _autoNumInitValue;
            set
            {
                if (TypeOfAutoNum == 0)
                {
                    if (!value.All(Char.IsDigit))
                    {
                        value = "0";
                    }
                }
    
                if (TypeOfAutoNum == 1)
                {
                    if (!value.All(Char.IsLetter) || value.Length > 1)
                    {
                        value = "";
                    }
                }
    
                this.RaiseAndSetIfChanged(ref _autoNumInitValue, value);
          }
→ Ссылка