2017-03-02 9 views
0

Ich versuche, meine fokussiert, nachdem der Benutzer darauf klickt. Derzeit ist es möglich, die border über tabs zu fokussieren, aber per Klick wäre für den Benutzer viel bequemer.WPF: Fokus Grenze nach dem Klick

 <Border x:Name="BorderFileInfo" Focusable="True" BorderBrush="LightGray" BorderThickness="1"> 
      <Grid Margin="3,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left"> 
       <!-- CONTENT CTRL --> 
      </Grid> 
     </Border> 

ich in einem anderen Beitrag sah, dass es ein possability ist das Click-Ereignis mit einem InputBinding aber ich weiß nicht, zu fangen, wie die border danach zu konzentrieren, ohne einen Befehl.

Stackoverflow: Why doesnt WPF border control have a mousedoubleclick event?

Gibt es einen einfachen Weg, um die andere zu tun, als Befehle erstellen zu müssen?

Die App ist ziemlich klein, also möchte ich keine Befehle verwenden, wenn ich nicht muss.

Antwort

2

Ein einfacher Weg ist PreviewMouseDown oder ähnliche Mausereignisse zu handhaben und den Fokus:

private void Border_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Keyboard.Focus(sender as Border); 
} 

bearbeiten

Notiz, die Sie klicken, durch den Umgang mit Preview und PreviewMouseLeftButtonUp auf diese Weise erstellen:

_isdown =false; 
private void Border_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    _isdown =true; 
} 
private void Border_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    if (_isdown) 
    { 
     _isdown = false; 
     Keyboard.Focus(sender as Border); 
    } 
}