如何避免 UWP 中 TextBox 的 Focusing 丢失?
How to avoid loss Focusing of TextBox in UWP?
我尝试了什么?
<Grid >
<Canvas>
<Canvas x:Name="Gesture" Width="500" Height="500" Background="Gray" AllowFocusOnInteraction="False">
</Canvas>
<StackPanel x:Name="SidePanel" Canvas.Left="500" Background="LightCyan" Width="100" Height="500">
<TextBox x:Name="NameBox" Text="Prem" Width="100" Height="35"/>
<Button Content="But" AllowFocusOnInteraction="False"/>
</StackPanel>
</Canvas>
</Grid>
我需要达到什么目标?
当文本框获得焦点时,如果我点击按钮它不会失去焦点。因为,我设置了按钮 属性 - AllowFocusOnInteraction="False".
我需要实现相同的效果,当我在灰色区域内单击时(手势 Canvas)。我设置了 Canvas 属性-AllowFocusOnInteraction="False"。但是不行。
当我在手势内部单击时,文本框应该聚焦 canvas。怎么做?为什么 AllowFocusOnInteraction 不适用于 Gesture Canvas?
您可以在 LostFocus
事件中设置焦点状态,以确保您的 TextBox 不会失去焦点。
您可以处理 TextBox 的 LostFocus 事件和 StackPanel 的 Tapped 事件。然后当点击StackPanel时,在LostFocus
事件
中改变flag值并设置焦点状态
<StackPanel x:Name="SidePanel" Canvas.Left="500" Background="LightCyan" Width="100" Height="500" Tapped="SidePanel_Tapped">
<TextBox x:Name="NameBox" Text="Prem" Width="100" Height="35" LostFocus="NameBox_LostFocus"/>
<Button Content="But" AllowFocusOnInteraction="False"/>
</StackPanel>
代码隐藏
private bool setFocus = true;
private void NameBox_LostFocus(object sender, RoutedEventArgs e)
{
if (setFocus == true)
{
NameBox.Focus(FocusState.Programmatic);
}
}
private void SidePanel_Tapped(object sender, TappedRoutedEventArgs e)
{
setFocus = true;
}
我尝试了什么?
<Grid >
<Canvas>
<Canvas x:Name="Gesture" Width="500" Height="500" Background="Gray" AllowFocusOnInteraction="False">
</Canvas>
<StackPanel x:Name="SidePanel" Canvas.Left="500" Background="LightCyan" Width="100" Height="500">
<TextBox x:Name="NameBox" Text="Prem" Width="100" Height="35"/>
<Button Content="But" AllowFocusOnInteraction="False"/>
</StackPanel>
</Canvas>
</Grid>
我需要达到什么目标?
当文本框获得焦点时,如果我点击按钮它不会失去焦点。因为,我设置了按钮 属性 - AllowFocusOnInteraction="False".
我需要实现相同的效果,当我在灰色区域内单击时(手势 Canvas)。我设置了 Canvas 属性-AllowFocusOnInteraction="False"。但是不行。
当我在手势内部单击时,文本框应该聚焦 canvas。怎么做?为什么 AllowFocusOnInteraction 不适用于 Gesture Canvas?
您可以在 LostFocus
事件中设置焦点状态,以确保您的 TextBox 不会失去焦点。
您可以处理 TextBox 的 LostFocus 事件和 StackPanel 的 Tapped 事件。然后当点击StackPanel时,在LostFocus
事件
<StackPanel x:Name="SidePanel" Canvas.Left="500" Background="LightCyan" Width="100" Height="500" Tapped="SidePanel_Tapped">
<TextBox x:Name="NameBox" Text="Prem" Width="100" Height="35" LostFocus="NameBox_LostFocus"/>
<Button Content="But" AllowFocusOnInteraction="False"/>
</StackPanel>
代码隐藏
private bool setFocus = true;
private void NameBox_LostFocus(object sender, RoutedEventArgs e)
{
if (setFocus == true)
{
NameBox.Focus(FocusState.Programmatic);
}
}
private void SidePanel_Tapped(object sender, TappedRoutedEventArgs e)
{
setFocus = true;
}