WPF PasswordBox和虚拟键盘(触摸)

时间:2011-09-13 12:10:41

标签: wpf xaml .net-4.0 passwords

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

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

<PasswordBox InputMethod.IsInputMethodEnabled="True"/>

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


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

4 个答案:

答案 0 :(得分:1)

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

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

a)可行的最佳方法是创建自己的控件,该控件继承自文本框。

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

c)您可以通过编程方式启动“osk.exe”,这也将键盘带到前面

答案 1 :(得分:1)

  

由于带有密码框的平板电脑上的虚拟键盘错误,   我不得不想出一个解决方案和这里列出的其他建议   不是一个好人。 (文字仍然可读,只是略微   模糊处理。)

以下是解决方法:

<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

答案 2 :(得分:0)

  

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

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

答案 3 :(得分:0)

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

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