【问题标题】:WPF PasswordBox and virtual keyboard (touch)WPF PasswordBox 和虚拟键盘(触摸)
【发布时间】:2011-09-13 12:10:40
【问题描述】:

我在 WPF 应用程序中有一个 PasswordBox,它在没有键盘的触摸屏上使用。这是一个问题,因为单击 PasswordBox 时没有显示虚拟键盘图标。

我觉得它应该与 InputMethod 及其 IsInputMethodEnabled 属性有关,但以下仍然不起作用:

<PasswordBox InputMethod.IsInputMethodEnabled="True"/>

是否可以强制弹出虚拟键盘?


作为一种解决方法,我创建了一个自定义虚拟键盘​​,可以直接修改 PasswordBox.Password..

【问题讨论】:

    标签: wpf xaml .net-4.0 passwords


    【解决方案1】:

    我相信 PasswordBox 控件不支持这一点,因为它不是直接从 TextBox 继承的。相反,它是从控件继承的。

    我没有直接的答案,但是对于这个问题有一些非常糟糕的解决方法

    a) 最好的办法是创建您自己的控件,该控件继承自文本框。

    b) 您可以在密码框上方放置一个文本框。当用户点击它时,您处理文本框 GotFocus 事件,隐藏文本框并将焦点放在您的密码框上。

    c) 您可以通过编程方式启动“osk.exe”,它也会将键盘放在前面

    【讨论】:

    • B:这对我不起作用,未显示键盘图标。 C:这可行,但关闭窗口后缀不起作用,它还显示包含数字键盘的完整键盘布局。我会尝试建议 A。
    【解决方案2】:

    由于带有密码框的平板电脑上的虚拟键盘错误, 我必须想出一个解决方案和此处列出的其他建议 不是一个好的。 (文字仍然可读,只是稍微 混淆了。)

    解决方法如下:

    <TextBox Name="Password" Text="{Binding Path=Password, UpdateSourceTrigger=PropertyChanged}" Height="50"
    
             Margin="0,4,0,10" FontFamily="Courier New"
    
             Foreground="{Binding ElementName=Password, Path=Background}">
    
                <TextBox.TextDecorations>
    
                    <TextDecorationCollection>
    
                        <TextDecoration Location="Strikethrough" PenThicknessUnit="FontRenderingEmSize" >
    
                            <TextDecoration.Pen>
                                <Pen Brush="Black" Thickness="0.5" DashCap="Round" StartLineCap="Round" EndLineCap="Round">
                                    <Pen.DashStyle>
                                        <DashStyle Dashes="0.0, 1.2" Offset="0.6"/>
                                    </Pen.DashStyle>
                                </Pen>
                            </TextDecoration.Pen>
    
                        </TextDecoration>
    
                    </TextDecorationCollection>
    
                </TextBox.TextDecorations>
            </TextBox>
    

    MSDN 来源: https://msdn.microsoft.com/en-us/library/system.windows.controls.passwordbox(VS.90).aspx

    【讨论】:

      【解决方案3】:

      是否可以强制弹出虚拟键盘?

      是的,它是: How to make WPF input control show virtual Keyboard when it got focus in touch screen

      【讨论】:

        【解决方案4】:

        在 Windows 10 周年更新上运行的较新版本的 WPF 中本机支持此功能。

        我们使用WPFTabTip 库将此支持添加到其他版本的 Windows。

        【讨论】:

        • 这在 win 7 上可以用吗?我在台式电脑上用 win 7 试过,但它不工作。
        • github 页面声明支持 8.1 和 10。我认为 TabTip 面板是 Windows 8 及更高版本,但我不确定。 Microsoft 在某个时候从 OSK 更改为 TabTip。
        • win 7也有tabtip。
        • 仅供参考,这不再在最新的 Windows 版本 (1803) 上自动运行。使用自动化 (System.Windows.Automation.Peers.UIElementAutomationPeer.CreatePeerForElement(yourPasswordBox);) 可以解决问题,但它仍然很古怪,例如,如果您从文本框移动到密码框,TabTip 会关闭,然后您需要再次点击密码框。我对 WPFTabTip 库有同样的奇怪行为。这适用于常规 WPF 应用程序(不是 UWP)。
        猜你喜欢
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-27
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多