WPF: OnKeyDown () не называемый для клавиши "Пробел" в управлении, полученном из WPF TextBox

Я думал, что Вы могли сделать это из командной строки?

svn ci -force <filename>

у меня нет репозитория здесь для проверения этого, таким образом, я мог бы быть неправым.

16
задан Ergwun 22 September 2009 в 08:17
поделиться

2 ответа

Похоже, проблема в том, что событие нажатия клавиши пробела (и обратного пробела и т. Д.) Обрабатывается уже в TextBox, прежде чем оно поднимется до моего производного элемента управления. Я предполагаю, что это часть процесса составления текста, как сообщил Вим.

Чтобы обойти это, я добавил обработчик, который будет получать событие нажатия клавиши, даже если оно уже было обработано, и устанавливает для его члена Handled значение false, чтобы дайте ему нормально пузыриться. В приведенном ниже примере он делает это только для клавиш пробела, но в моем случае мне нужно сделать это для любых ключевых событий, которые я действительно не хочу обрабатывать в моем SelectedableTextBlock, поскольку я не Пока не знаю, какие ключевые события могут заинтересовать родителей.

public class SelectableTextBlock : TextBox
{
    public SelectableTextBlock() : base()
    {
        this.AddHandler(SelectableTextBlock.KeyDownEvent, new RoutedEventHandler(HandleHandledKeyDown), true);
    }

    public void HandleHandledKeyDown(object sender, RoutedEventArgs e)
    {
        KeyEventArgs ke = e as KeyEventArgs;
        if (ke.Key == Key.Space)
        {
            ke.Handled = false;
        }
    }
    ...
}

Я, конечно, все еще интересуюсь, есть ли у кого-нибудь лучшее решение ...

Спасибо, E.

14
ответ дан 30 November 2019 в 17:05
поделиться

У меня однажды была эта проблема с пробелами и событиями в текстовом поле. События НЕ запускаются только при добавлении или удалении символа пробела?

Вот что я получил в качестве ответа: ( http://social.msdn.microsoft.com/Forums/en-US/wpf / thread / 446ec083-04c8-43f2-89dc-1e2521a31f6b )

Поскольку некоторые редакторы IME обрабатывают нажатие клавиши с пробелами как часть процесса композиции текста, поэтому Avalon требует сообщения о правильном составленном тексте через событие TextInput.

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

С уважением, Вим

2
ответ дан 30 November 2019 в 17:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: