pro*_*man 6 c# xaml focus windows-phone-8.1
想象一下以下简单的页面标记:
<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>
Run Code Online (Sandbox Code Playgroud)
和以下代码隐藏:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Button1.Visibility = Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)
当我点击Button1按钮时它会隐藏(这是预期的和期望的)但由于某种原因TextBox自动获得焦点并出现在屏幕上的键盘.我不希望这种意外的自动对焦.
我可以尝试在Click处理程序中使用焦点做一些事情,但在实际应用程序中,它是使用带有命令等的ViewModel实现的,它看起来像脏黑客(即使我在隐藏按钮后立即更改焦点,键盘也会短时间出现).
我找到的第二种方法是在文本框(注释FocusHolder)之前的某处创建"隐形"按钮,这样做要好得多,但看起来也不正确.
那是什么?这是一种我能以某种方式配置为从重叠元素"重定向"焦点的机制吗?或者这是一个错误?什么是防止这种不良自动对焦的正确方法?
其原因是由于Tab索引从按钮切换到文本框。这是WP8.1非常烦人的事情。我还没有找到一个“好的”解决方案,但这可能比您当前的解决方案更干净。
xaml
<TextBox x:Name="myTextBox" Text="zxczczczczx"/>
Run Code Online (Sandbox Code Playgroud)
功能
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
myTextBox.IsTabStop = false;
Button1.Visibility = Visibility.Collapsed;
myTextBox.IsTabStop = true;
}
Run Code Online (Sandbox Code Playgroud)
祝你好运。
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |