Изменить ключ в WPF KeyDown - PullRequest
2 голосов
/ 10 мая 2010

Проблема преобразования старых приложений. VB6 TextBox_KeyDown () позволяет менять ключ (например, принудительно нажимать клавишу в верхнем регистре, но есть много других применений). Как это можно сделать в WPF?

Единственный способ, которым я могу видеть, - это обрабатывать все нажатия клавиш TextBox. По сути, переопределить редактирование TextBox. Я бы предпочел не идти туда.

1 Ответ

0 голосов
/ 19 мая 2010

Очень быстрое и грязное решение. Предполагая, что вы хотите привязать значение TextBox.Text к чему-либо, вы можете написать конвертер, который просто вызывает ToUpper () в строке.

В приведенном ниже примере текстовое поле привязано к себе. Скорее всего, это НЕ то, что вы хотите в производстве, но это может вдохновить.

<local:UpperConverter x:Key="toUpperConverter" />

...

<TextBox Text="{Binding RelativeSource={RelativeSource Mode=Self},
                                Path=Text, Mode=OneWay, Converter={StaticResource toUpperConverter},
                                UpdateSourceTrigger=PropertyChanged}" />

...

class UpperConverter:IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value.ToString().ToUpper();
        }
...