Как мне зафиксировать нажатия клавиш в приложении Silverlight? - PullRequest
1 голос
/ 05 июня 2009

Я пытаюсь зафиксировать любое нажатие клавиши, которое происходит внутри моего приложения Silverlight 2. Там нет никаких полей ввода, я пишу игру, и нужно знать, какая из клавиш со стрелками нажимается. Мои лучшие догадки о том, как захватить их с помощью обработчика событий, не увенчались успехом. Любые рекомендации?

Ответы [ 4 ]

1 голос
/ 05 июня 2009

Рад видеть вас снова (виртуально).

Я предполагаю, что вы уже пытались подключить KeyDown к корневому элементу UserControl. Вот несколько советов:

  • Плагин должен сосредоточиться, прежде чем он увидит ключевые события. Вы должны будете заставить пользователя нажать на плагин, чтобы начать.

  • Убедитесь, что у вас нет другого элемента (например, ScrollViewer), который использует события клавиш со стрелками. Если у вас есть ScrollViewer в игре, вы будете видеть только KeyUp.

  • Нет переключения в полноэкранный режим.

Должно быть что-то простое, чего вам не хватает, вот так. Надеюсь, это поможет.

0 голосов
/ 23 июля 2009

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

Страница

this.KeyDown += (s, e) =>
   {
       MyControl control = (MyControl)Layoutroot.FindName("controlname");
       if(control != null)
       {
           control.MyPublicFunction(e.Key);
       }
   };

MyControl

public MyPublicFunciton(Key pressedKey)
{
    if(pressedKey == Key.Enter)
    {
        //Do something
    }
}
0 голосов
/ 05 июня 2009

Silverlight 2 поддерживает события KeyUp и KeyDown (я полагаю, только KeyPress).

В этих событиях вы получаете объект KeyEventArgs в качестве параметра. Вы можете получить KeyCode или KeyData из этого.

0 голосов
/ 05 июня 2009

Обработка события KeyDown и / или KeyUp в вашей корневой сетке.

...