WPF:单击后的焦点边框
WPF: Focus border after click
我正试图在用户点击后让我的 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>
我在另一个 post 中看到可以使用 InputBinding
捕捉点击事件,但我不知道如何在不使用命令。
Whosebug: Why doesnt WPF border control have a mousedoubleclick event?
除了必须创建命令之外,还有其他简单的方法可以做到这一点吗?
该应用程序非常小,所以如果不需要,我不想使用命令。
一种简单的方法是处理 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);
}
}
我正试图在用户点击后让我的 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>
我在另一个 post 中看到可以使用 InputBinding
捕捉点击事件,但我不知道如何在不使用命令。
Whosebug: Why doesnt WPF border control have a mousedoubleclick event?
除了必须创建命令之外,还有其他简单的方法可以做到这一点吗?
该应用程序非常小,所以如果不需要,我不想使用命令。
一种简单的方法是处理 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);
}
}