如果你希望你的文本框不会失去焦点,你应该能够通过Focus
方法在LostFocus
设置对焦事件。
如您所知,如果我们在LostFocus
事件中设置Focus
,则无法触发Click
事件。
因此,我们应该可以在您的LostFocus
事件中添加if
,当用户单击按钮时,文本可能会失去焦点。为此,我们可以添加PointerEntered
事件和Button
的PointerExited
。在PointerEntered
事件中,我们可以设置值setFocus
。
例如:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Click" AllowFocusOnInteraction="False" IsDoubleTapEnabled="False" IsHitTestVisible="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False"></Button>
<TextBox Name="MyText" Text="Hello" LostFocus="MyText_LostFocus"></TextBox>
<Button Name="MyButton" PointerEntered="MyButton_PointerEntered" PointerExited="MyButton_PointerExited" Click="Button_Click" Content="Submit"></Button>
</StackPanel>
</Grid>
后面的代码:
private bool setFocus = true;
private void MyText_LostFocus(object sender, RoutedEventArgs e)
{
if (setFocus == true)
{
MyText.Focus(FocusState.Programmatic);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MyButton.Focus(FocusState.Programmatic);
}
private void MyButton_PointerEntered(object sender, PointerRoutedEventArgs e)
{
setFocus = false;
}
private void MyButton_PointerExited(object sender, PointerRoutedEventArgs e)
{
setFocus = true;
}
(此属性也是UWP) – PrisonMike
[IsTabStop](https://docs.microsoft.com/en-us/uwp/api/Windows.UI。 Xaml.Controls.Control#Windows_UI_Xaml_Controls_Control_IsTabStop)*“表示控件是否包含在标签导航中。”*换句话说,它控制**键盘导航。这不是问题的要求。 – IInspectable
哦,我以为他的意思是键盘焦点,因为如果他们没有焦点是不可能按下按钮,他还说,在winforms中,他会使用isTabStop属性,所以我只是指出这也是可用的在uwp – PrisonMike