Silverlight Canvas не поддерживает KeyDown? - PullRequest
4 голосов
/ 08 апреля 2010

У меня есть это:

<Canvas x:Name="LayoutRoot" KeyDown="LayoutRoot_KeyDown">
</Canvas>

В недавно выпущенном приложении Ag 3 в VS2008. Я просто изменил значение по умолчанию <Grid /> на <Canvas /> и добавил обработчик KeyDown, который выдает MessageBox.

Но как бы я ни пытался, событие KeyDown никогда бы не сработало.

Просто <Canvas /> не поддерживает KeyDown или я что-то не так делаю?

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

Вам нужно иметь хотя бы что-то внутри Canvas, которое может получить фокус, и вы обнаружите, что событие будет всплывать.

Вы также можете установить IsHitTestVisible="True" на холсте.

3 голосов
/ 08 апреля 2010

Поскольку ваш Canvas является «LayoutRoot», вы можете использовать вместо него содержащий UserControl.

Поместите собственность IsTabStop="true" на UserControl. В Loaded событие вызова this.Focus(). Присоедините ваш обработчик KeyDown к UserControl вместо Canvas.

Пока плагин имеет фокус (что вы можете убедиться с помощью небольшого Javascript), вы должны получать ключевые события.

...