作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
想象一下以下简单的页面标记:
<Page
x:Class="AutoFocusBug.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<!--<Button x:Name="FocusHolder" Width="0" Height="0" MinHeight="0" MinWidth="0"/>-->
<TextBox Text="zxczczczczx"/>
<Button x:Name="Button1" Content="Button1" Click="ButtonBase_OnClick"/>
</StackPanel>
</Page>
以及以下代码隐藏:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Button1.Visibility = Visibility.Collapsed;
}
当我单击 Button1
按钮时,它会隐藏(这是预期和期望的)但由于某种原因 TextBox
自动获得焦点并出现屏幕键盘。我不想要这种意外的自动对焦。
我可以尝试在 Click
处理程序中做一些有焦点的事情,但在真正的应用程序中,它是用 ViewModel 和命令等实现的,它看起来像肮脏的 hack(而且键盘甚至会出现很短的时间如果我在隐藏按钮后立即改变焦点)。
我发现的第二种方法是在文本框之前的某处创建“不可见”按钮(注释 FocusHolder
),这种方法要好得多,但看起来也不是正确的技术。
那么,那是什么?这是我可以以某种方式配置以从折叠元素“重定向”焦点的某种机制吗?或者这是一个错误?防止这种不需要的自动对焦的正确方法是什么?
最佳答案
这是因为 Tab
索引从按钮切换到了文本框。这是WP8.1非常烦人的事情。我还没有为此找到“好的”解决方案,但这可能比您当前的解决方案更干净。
XAML
<TextBox x:Name="myTextBox" Text="zxczczczczx"/>
函数
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
myTextBox.IsTabStop = false;
Button1.Visibility = Visibility.Collapsed;
myTextBox.IsTabStop = true;
}
祝你好运。
关于c# - Windows Phone 8.1 XAML 应用程序。如何防止不恰当的自动调焦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778517/
我是一名优秀的程序员,十分优秀!