Как создать пользовательское текстовое поле в Windows Phone 7?

#silverlight #windows-phone-7 #custom-controls #sip

#silverlight #windows-phone-7 #пользовательские элементы управления #sip

Вопрос:

Возможно ли обработать sip, создав пользовательское текстовое поле.

Я хочу создать пользовательское текстовое поле -> создать событие got focus -> В фокусе моего пользовательского текстового поля вместо SIP должна открыться моя пользовательская клавиатура.

Требования:

  1. Как создать пользовательское текстовое поле?
  2. Откройте пользовательскую клавиатуру вместо SIP
  3. Установите курсор в текстовое поле.

Ответ №1:

Отображение SIP обрабатывается операционной системой и всегда будет находиться на вершине визуального дерева любого приложения. Если вы хотите предоставить пользовательский SIP, вам нужно будет предоставить альтернативный элемент управления вводом, поскольку отображение собственного SIP привязано к элементам управления вводом (таким как TextBox , PasswordBox и т.д.). Возможно, эта статья о создании болгарской клавиатуры покажется вам полезной.

Чтобы создать пользовательское, TextBox вы могли бы начать с наследования от TextBox самого себя, но вы можете столкнуться с тем, что вам не нравится реализация по умолчанию, поэтому вы можете просто захотеть наследовать от Control вместо этого.

Чтобы открыть пользовательский SIP вместо стандартного SIP, вам нужно связать это с событием в вашем пользовательском текстовом поле, и это одно из мест, где наследование от Control, вероятно, облегчит вашу жизнь, потому что если вы наследуете от TextBox, то, как только оно получит фокус, отобразится SIP по умолчанию. Вероятно, вы захотите сделать SIP частью ControlTemplate для PhoneApplicationFrame , чтобы вы могли гарантировать, что он находится над содержимым страницы.

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

Это ужасно много работы для достижения чего-то, что звучит просто, и я подозреваю, именно поэтому никто этого еще не сделал 🙂 Я бы определенно рекомендовал запросить его в качестве функции на официальном форуме пользовательского голоса разработчиков WP7

Комментарии:

1. привет, Лакин, извини, что прерываю тебя. Есть ли у вас какое-либо решение для этого сценария. Я взял текстовое поле -> поместил на него прозрачный холст -> на canvas добавить объект Line (для отображения курсора) -> Включить фокус текстового поля -> перенести фокус на какой-либо другой элемент управления (поэтому SIP не будет отображаться >-> Теперь при изменении текста я пытаюсь сдвинуть строку на canvas, чтобы она отображалась как курсор. Но проблема в том, как я могу получить количество пикселей, занимаемых буквой в textchanged в текстовом поле. Есть ли какая-то работа, чтобы получить его.