Изменить ключ в WPF KeyDown
Устаревшая проблема конвертации приложения. VB6 TextBox_KeyDown() позволяет изменять клавишу (например, принудительно нажимать клавишу в верхнем регистре, но есть много других применений). Как это можно сделать в WPF?
Единственный способ, которым я могу видеть, - это обрабатывать все нажатия клавиш TextBox. По сути, переопределить редактирование TextBox. Я бы лучше не пошел туда.
1 ответ
Очень быстрое и грязное решение. Предполагая, что вы хотите привязать значение 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();
}
Вы можете установить CharacterCasing на Upper.
<TextBox CharacterCasing="Upper"></TextBox>