微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Windows Phone 8.1 XAML应用程序.如何防止不适当的自动对焦变化?

想象一下以下简单的页面标记
<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实现的,它看起来像脏黑客(并且即使我在隐藏按钮后立即更改焦点,键盘也会短时间出现).

我找到的第二种方法是在文本框之前的某处(注释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;
}

祝好运.

原文地址:https://www.jb51.cc/csharp/91823.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐