1


0

SketchDownでKeyDownが起動しない

Silverlight SketchFlowプロジェクトのビューのLayoutRootにKeyDownイベントハンドラーを追加しようとしていますが、起動しないようです。

イベントタイプをMouseLeftButtonに変更するとイベントが発生しますが、キーボードショートカットを使用してこれをデモンストレーションします。

誰も両方を達成する方法を知っていますか?

2 Answer


1


さて、招かれざる者には明らかではないいくつかの理由で、XAMLで指定されたときにKeyDownイベントは発生しませんでした。 コードビハインドで「Application.Current.RootVisual.KeyDown」にフックするとうまくいくことがわかりました。


0


その理由は、SketchFlowプレーヤーでホストされている場合、実際にはLayoutRootが実際には「ない」レイアウトルートであるためです。 キーボードフォーカスは、最初はSketchflowプレーヤーにあります。

ページのロードイベントにFocus()呼び出しを追加することもできますが、最初に実際のブラウザーのSilverlightオブジェクトに最初にフォーカスするJscriptを追加したことも確認してください。 e.g.

        function appLoad(sender, args) {
            var xamlObject = document.getElementById('SilverlightObject');
            if (xamlObject != null)
                xamlObject.focus();
        }
</code></pre>

<p>and</p>

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

<p>If you don't have that code in the HTML/ASPX page hosting a Silverlight app, all keypresses go the browser instead.</p>