2016-07-20 22 views
0

ich diese Routine bin mit, wenn meine LeftCtrl überprüfen Taste auf meinem Image-Steuerelement gedrückt wird:Warum KeyDown funktioniert nicht auf meinem Steuerelement, aber auf dem gesamten Formular?

private void mainImage_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.LeftCtrl) 
    { 
     LeftCtrlButtonIsPressed = true; 
    } 
} 

private void mainImage_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.LeftCtrl) 
    { 
     LeftCtrlButtonIsPressed = false; 
    } 
} 

Wenn ich meine Ereignisse gesetzt auf dem Bild oder die Grenze um mein Bild, um es nicht hat Hit:

<Border x:Name="mainImageBackBorder" .... KeyDown="mainImage_KeyDown" KeyUp="mainImage_KeyUp"> <! -- Does not Hit --> 
    <Image x:Name="mainImage" ... KeyDown="mainImage_KeyDown" KeyUp="mainImage_KeyUp"> <! -- Does not Hit --> 
     <Image.RenderTransform> 
      <! -- ... --> 
     </Image.RenderTransform> 
    </Image> 
</Border> 

aber es Hit s, wenn ich es auf meinem Fenster gesetzt:

<Window x:Class="ProjectName.MainWindow" 
     .. 
     DataContext="{StaticResource mainViewModel }" 
     Title="MainWindow" Height="600" Width="800" KeyDown="mainImage_KeyDown" KeyUp="mainImage_KeyUp"> <!-- It Hits --> 

Antwort

4

Ihr Image-Steuerelement empfängt keine KeyDown-Ereignisse, da die Focusable-Eigenschaft standardmäßig auf false festgelegt ist. Aus der ersten Zeile der Focusable-Dokumentation:

Nur das fokussierte Element empfängt Tastatureingabe.

Auch erwähnenswert:

Wenn von UIElement Ableitung direkt (im Gegensatz zu von Control), überlegen, ob Sie Ihr Element wünschen fokussierbar zu sein, denn durch das Element wird standardmäßig nicht fokussierbar . Wenn Sie Ihr Element sein fokussierbarem wollen, überschreiben Sie die Metadaten für diese Eigenschaft in Ihrem statischen Konstruktor der Art wie folgt:

Wie können Sie von der Image class documentation es aus UIElement herleitet, nicht Kontrolle, so standardmäßig es kann den Fokus nicht erhalten.

Dies sollte korrekt funktionieren, wenn Sie das Bild fokussierbar machen, aber beachten Sie den offensichtlichen Nebeneffekt - der aktuelle Fokus Ihres Benutzers kann auf einem Bildsteuerelement verloren gehen, das keine visuelle Anzeige anzeigt.

+0

Ich sehe. Danke für die Hilfe :) Ich werde mir das in Zukunft bewusst sein –