Question

J'ai essayé de gérer l'événement KeyDown d'un UserControl (page) dans mon application Silverlight, mais il semble y avoir un comportement étrange de la part de la fonctionnalité d'entrée utilisateur Silverlight. L'événement ne se soulève en aucun cas. J'ai même essayé de fixer le gestionnaire d'événements à chaque contrôle des conteneurs dans le UserControl, mais toujours sans succès. En effet, le système « de routage des événements » d'entrée utilisateur Silverlight est tout à fait nouvelle et semble assez étrange pour moi, alors peut-être il est juste un malentendu de ma part, bien que j'ai plutôt la moindre idée de la façon de procéder.

Le code suivant est un modèle de la page particulière avec laquelle je teste.

<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>

Dans WPF, la solution évidente pour une telle question serait de gérer l'événement PreviewKeyDown, mais malheureusement, ce n'est pas disponible dans Silverlight 2. Toutes les idées sont les bienvenues (et une brève explication des raisons pour lesquelles le routage des événements Silverlight se comporte comme est).

Était-ce utile?

La solution

Vous pouvez gérer l'entrée utilisateur de la principale UIElement: Application.Current.RootVisual

Application.Current.RootVisual.KeyDown += Application_KeyDown

Ensuite, vous pouvez gérer dans la méthode Application_KeyDown toutes les entrées utilisateur à partir du clavier.

Vous pouvez également consulter ce numéro: Gestion des événements KeyDown dans une toile

Autres conseils

J'ai essayé le XAML que vous avez fourni et ne pas remettre un problème l'événement KeyDown.

Une chose qui pourrait être à l'origine: le plug-in Silverlight ne voir événements d'entrée si elle se concentre. Donc, essayez et cliquez sur le contenu Silverlight dans le navigateur pour lui donner le focus d'entrée avant d'appuyer sur les touches.

Faites-moi savoir si cela résout votre problème ou non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top