WPF PasswordBox и виртуальная клавиатура (сенсорная) - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть PasswordBox в приложении WPF, которое используется на сенсорном экране без клавиатуры. Это проблема, поскольку значок виртуальной клавиатуры не отображается при нажатии на PasswordBox.

У меня такое ощущение, что оно должно иметь какое-то отношение к InputMethod и его свойству IsInputMethodEnabled, но следующее по-прежнему не работает:

<PasswordBox InputMethod.IsInputMethodEnabled="True"/>

Можно ли заставить виртуальную клавиатуру всплыть?


В качестве обходного пути я создал собственную виртуальную клавиатуру, которая напрямую изменяет PasswordBox.Password ..

Ответы [ 4 ]

1 голос
/ 21 сентября 2015

Из-за ошибки виртуальной клавиатуры на планшетах с паролем я должен был найти решение, и другое предложение, приведенное здесь, не было хорошим.(Текст был еще читабелен, только слегка запутан.)

Вот решение:

<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

1 голос
/ 13 сентября 2011

Я считаю, что элемент управления PasswordBox не поддерживает это, потому что он не наследуется напрямую от TextBox. Вместо этого он наследуется от контроля.

У меня нет прямого ответа для вас, но есть некоторые действительно плохие обходные пути для этой проблемы

а) возможно, лучший способ сделать это - создать свой собственный элемент управления, который наследуется от текстового поля.

б) Вы можете поместить текстовое поле над паролем. Когда пользователь нажимает на него, вы обрабатываете событие GotFocus для текстовых полей, скрываете текстовое поле и присваиваете фокус вашему паролю.

в) вы можете программно запустить "osk.exe", который также выведет клавиатуру вперед

0 голосов
/ 21 марта 2017

Это поддерживается изначально в новых версиях WPF, работающих на Windows 10 Anniversary Update.

Мы используем библиотеку WPFTabTip , чтобы добавить эту поддержку в другие версии Windows.

0 голосов
/ 31 октября 2013
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...