如果周围的元素被点击,保持焦点在文本框中

本文关键字:焦点 文本 周围 元素 如果 | 更新日期: 2023-09-27 18:13:53

我有一个小的用户控件,它包含一些Xaml标记,其中包括一个TextBox。当控件被选中时,我自动将焦点设置在TextBox上。但是,当用户单击任何其他元素(如边框)时,焦点将从TextBox中移除。

例如

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <Rectangle Grid.Row="0" Fill="Blue" IsHitTestVisible="False" />
  <TextBox Grid.Row="1" />
  <TextBlock Grid.Row="2" Text="Something" IsHitTestVisible="False" />
</Grid>

单击矩形或文本块会导致文本框失去焦点。

保持TextBlock焦点的最好方法是什么?我觉得我错过了一些简单的东西。

如果周围的元素被点击,保持焦点在文本框中

点击可能会穿过网格并将焦点放在它下面的任何东西上。

尝试在<Grid>上设置Background="Transparent"

我找到的唯一解决方案是重新构建有关控件周围的Xaml,以便自定义控件包含我想要的所有内容,而不影响文本框的焦点。然后在鼠标事件上放置一个处理程序,以确保TextBox保持焦点。

我对这个解决方案不满意,但又想不出别的办法。

(我确实尝试处理LostFocus事件并确定鼠标是否仍然是用户控件,但当我不得不不断跟踪鼠标位置时,放弃了这条路线)。