【问题标题】:WPF: Focus border after clickWPF:单击后焦点边框
【发布时间】:2017-03-02 14:47:01
【问题描述】:

我试图在用户点击我的border 后获得焦点。 目前可以通过tabs聚焦border,但通过点击对用户来说会更方便。

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

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

这个应用程序很小,所以我不想在非必要的时候使用命令。

【问题讨论】:

    标签: c# wpf onclick click focus


    【解决方案1】:

    一种简单的方法是处理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);
         }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2010-10-12
      • 2011-05-25
      相关资源
      最近更新 更多