2017-03-02 64 views
0

我试图在用户点击它后重点关注我的border。 目前有可能通过tabs关注border,但通过点击会更方便用户。WPF:点击后的焦点边框

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

我在另一篇文章中看到,有赶上与InputBinding点击事件possability,但我不知道如何事后集中border不使用命令。

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

是否有一个简单的方法来做到这一点除了不必创建命令?

该应用程序非常小,所以我不想使用命令,如果我不必。

回答

2

一个简单的方法是处理PreviewMouseDown或类似的鼠标事件,并将焦点设置:

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

编辑

请注意,您可以通过这种方式处理的PreviewMouseLeftButtonDown和的PreviewMouseLeftButtonUp创建点击:

_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); 
    } 
}