KeyDown не срабатывает в SketchFlow - PullRequest
1 голос
/ 08 октября 2010

Я пытаюсь добавить обработчик события KeyDown в LayoutRoot представления в проекте Silverlight SketchFlow, но, похоже, он не срабатывает.

Событие возникает, если я изменяю тип события на MouseLeftButton, но я хочу продемонстрировать это с помощью сочетания клавиш.

Кто-нибудь знает, как добиться того и другого?

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Ну, по некоторым причинам, не очевидным для незваных, событие KeyDown не сработало, если указано в XAML.Я обнаружил, что перехват Application.Current.RootVisual.KeyDown в коде позади делает свое дело.

0 голосов
/ 08 октября 2010

Причина в том, что ваш LayoutRoot на самом деле не"корень макета" при размещении в плеере SketchFlow.Первоначально клавиатура фокусируется на проигрывателе Sketchflow.

Вы можете попробовать добавить вызов Focus () в событие загрузки страницы, но также убедитесь, что вы сначала добавили Jscript для первоначальной фокусировки на фактический объект браузера Silverlight.например,

<script type="text/javascript">
        function appLoad(sender, args) {
            var xamlObject = document.getElementById('SilverlightObject');
            if (xamlObject != null)
                xamlObject.focus();
        }

и

<object id='SilverlightObject' data= ...
            [snip]
            <param name="onError" value="onSilverlightError" />
            <param name="onLoad" value="appLoad" />

Если у вас нет этого кода на странице HTML / ASPX, на которой размещено приложение Silverlight, все нажатия клавиш идут в браузере.

...