WPF:点击后对焦边框

时间:2017-03-02 14:47:02

标签: c# wpf onclick click focus

我试图在用户点击后调整border。 目前,可以通过border关注tabs,但通过点击对用户来说会更方便。

        <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捕获点击事件,但我不知道如何在不使用命令的情况下关注border

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

除了必须创建命令之外,还有一种简单的方法吗?

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

1 个答案:

答案 0 :(得分:2)

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

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

修改

请注意,您可以通过以下方式处理PreviewMouseLeftButtonDown和PreviewMouseLeftButtonUp来创建Click:

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