Дорого времени суток!
Я пишу WPF контрол экранной клавиатуры. У нее должен быть режим пароля. Реализовывать этот режим я собрался с помощью PasswordBox. И в ходе реализации возникла проблема: если пользователь в процессе ввода пароля решит переместить каретку в любое место, кроме конца строки, то ввод из позиции каретки невозможен, поскольку ее положение в PasswordBox никак не отслеживается. Проблему удаления символа из любого места помогли решить команды EditingCommands, а вот со вставкой беда. Есть ли какие-либо вариаты ввода символов с форматом типа SomeClass.InsertSymbolInCaretPosition(string symbol, IInputElement myPasswordBox) либо вообще иные выходы из ситуации?
В общем, в ходе размышлений пришел к такому костыльному варианту:
Метод, по кнопке добавляющий символ в строку, выглядит так:
System.Windows.Forms.Clipboard.SetText("s");
passwordBox.Paste();
System.Windows.Forms.Clipboard.Clear();
В итоге, получаем копирование нужного символа, которое происходит автоматически в позицию каретки. Для нужд экранной клавиатуры этого вполне хватает.
Продвижение своими сайтами как стратегия роста и независимости