質問

私は、SilverlightアプリケーションでのUserControl(ページ)のKeyDownイベントを処理しようとしますが、Silverlightのユーザー入力機能の一部にいくつかの奇妙な行動があるように思われてきました。イベントはどのような状況の下で上げ取得されていません。私もまだ運と、ユーザーコントロール内の各コンテナコントロールにイベントハンドラをアタッチしようとしています。確かに、Silverlightのユーザー入力「イベントルーティング」システムは非常に新規であり、私にはかなり奇妙なようなので、私は続行する方法についてかなり無知持っているものの、おそらくそれは、私の一部にだけ誤解されます。

次のコードは、私がテストしていたと、特定のページのテンプレートです。

<UserControl x:Class="MyNamespace.CreditsPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             KeyDown="UserControl_KeyDown">
    <Grid x:Name="LayoutRoot">
        <Border>
            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
                <TextBlock TextAlignment="Center">
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                </TextBlock>
            </StackPanel>
        </Border>
    </Grid>
</UserControl>

WPFでは、このような問題のための明白な解決策はPreviewKeyDownイベントを処理することですが、残念ながらこれは、Silverlight 2には使用できません任意のアイデアは歓迎されるであろう(とSilverlightのイベントのルーティングはそれとして動作している理由の簡単な説明)である。

役に立ちましたか?

解決

Application.Current.RootVisual

あなたは、メインのUIElementからのユーザ入力を管理することができます

Application.Current.RootVisual.KeyDown += Application_KeyDown

そして、あなたはすべてのユーザー入力キーボードからApplication_KeyDown方法で処理することができます。

キャンバスまた、この問題を見ることができます>

他のヒント

私はあなたが提供してKeyDownイベントを渡す問題を持っていなかったXAMLを試します。

それを引き起こしている可能性があります一つのこと:それがフォーカスされている場合のSilverlightプラグインが唯一の入力イベントが表示されます。だから、試してみて、キーを押す前にそれに入力フォーカスを与えるために、ブラウザでのSilverlightのコンテンツをクリックしてください。

それはあなたの問題を解決していないかなら、私に教えてくださいます。

scroll top