如果周围的元素被点击,保持焦点在文本框中
本文关键字:焦点 文本 周围 元素 如果 | 更新日期: 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事件并确定鼠标是否仍然是用户控件,但当我不得不不断跟踪鼠标位置时,放弃了这条路线)。