Frage

Ich habe versucht, das Ereignis KeyDown einen Usercontrol (Seite) in meiner Silverlight-Anwendung zu behandeln, aber es scheint auf Seiten der Silverlight-Benutzereingabe Funktionalität einige seltsamen Verhalten. Die Veranstaltung wird unter keinen Umständen angehoben zu werden. Ich habe sogar versucht, die Event-Handler zu jedem Container Steuerung innerhalb der Usercontrol-Befestigung, aber immer noch ohne Erfolg. Tatsächlich ist die Silverlight-Benutzereingabe „Ereignis-Routing-System“ ganz neu ist und scheint ziemlich seltsam für mich, so ist es vielleicht nur ein Missverständnis meinerseits, obwohl ich ziemlich ratlos haben über das weitere Vorgehen.

Der folgende Code ist eine Vorlage der jeweiligen Seite mit dem ich testen werde.

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

In WPF, die offensichtliche Lösung für ein solches Problem wäre das PreviewKeyDown Ereignis zu behandeln, aber das ist leider in Silverlight nicht verfügbar 2. Irgendwelche Ideen wäre zu begrüßen (und eine kurze Erklärung, warum Silverlight Event-Routing, wie es verhält ist).

War es hilfreich?

Lösung

Sie können die Benutzereingabe von der Haupt UIElement verwalten: Application.Current.RootVisual

Application.Current.RootVisual.KeyDown += Application_KeyDown

Dann können Sie in der Application_KeyDown Methode werden alle Benutzereingaben über die Tastatur verarbeiten.

Sie können auch mit diesem Thema aussehen: Handhabung KeyDown-Ereignis in einem Leinwand

Andere Tipps

habe ich versucht, die XAML, die Sie zur Verfügung gestellt und hatten kein Problem das KeyDown-Ereignis übergeben.

Eine Sache, die es verursachen könnte: die Silverlight-Plugin wird nur Eingabeereignisse sehen, ob es fokussiert ist. So versuchen, und klicken Sie auf den Silverlight-Inhalte im Browser es den Eingabefokus zu geben, bevor die Tasten drücken.

Lassen Sie mich wissen, ob das Ihr Problem löst oder nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top