Silverlight SketchFlow プロジェクトのビューの LayoutRoot に KeyDown イベント ハンドラーを追加しようとしていますが、起動していないようです。
イベント タイプを MouseLeftButton に変更するとイベントが発生しますが、キーボード ショートカットを使用してこれを示したいと思います。
両方を達成する方法を知っている人はいますか?
Silverlight SketchFlow プロジェクトのビューの LayoutRoot に KeyDown イベント ハンドラーを追加しようとしていますが、起動していないようです。
イベント タイプを MouseLeftButton に変更するとイベントが発生しますが、キーボード ショートカットを使用してこれを示したいと思います。
両方を達成する方法を知っている人はいますか?
招待されていない人には明らかではないいくつかの理由により、XAML で指定されたときに KeyDown イベントが発生しませんでした。Application.Current.RootVisual.KeyDown
コードビハインドにフックするとうまくいくことがわかりました。
その理由は、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 ページにそのコードがない場合、すべてのキー押下は代わりにブラウザーに送られます。