Отображение SIP обрабатывается операционной системой и всегда будет в верхней части визуального дерева любого приложения. Если вы хотите предоставить пользовательский SIP, вам потребуется альтернативный элемент управления вводом, поскольку отображение собственного SIP связано с элементами управления вводом (такими как TextBox
, PasswordBox
и т. Д.). Вы можете найти эту статью о создании болгарской клавиатуры полезной.
Чтобы создать пользовательский TextBox
, вы могли бы начать с наследования от самого TextBox
, но вы можете столкнуться с реализацией по умолчанию, поэтому вы можете просто захотеть наследовать от Control
.
Чтобы открыть пользовательский SIP вместо SIP по умолчанию, вам нужно связать это с событием в вашем пользовательском TextBox, и это одно из мест, где наследование от Control, вероятно, облегчит вашу жизнь, потому что если вы наследуете из TextBox, то, как только он получит фокус, будет показан SIP по умолчанию. Возможно, вы захотите сделать SIP частью ControlTemplate для PhoneApplicationFrame
, чтобы гарантировать, что он выше содержимого страницы.
Чтобы получить курсор в пользовательском текстовом поле, вам нужно самостоятельно обработать отображение каретки и обновить его по мере того, как пользователь вводит ваш пользовательский SIP.
Это огромная работа по достижению чего-то, что звучит просто, и я подозреваю, почему никто еще этого не сделал :) Я определенно рекомендовал бы запросить это как функцию на официальном WP7 Dev UserVoice форуме