1

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

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

両方を達成する方法を知っている人はいますか?

4

2 に答える 2

1

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

于 2010-10-07T20:53:45.503 に答える
0

その理由は、SketchFlow プレーヤーでホストされている場合、LayoutRoot が実際には「その」レイアウト ルートではないためです。キーボード フォーカスは、最初は 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" />

Silverlight アプリをホストする HTML/ASPX ページにそのコードがない場合、すべてのキー押下は代わりにブラウザーに送られます。

于 2010-10-08T08:40:46.030 に答える