Настройка контекста для элементов управления Ink-Enabled

Все функции распознавания элементов управления с поддержкой рукописного ввода выполняются с помощью объекта RecognizerContext. API технологии Tablet PC позволяют задать свойство Factoid для объекта RecognizerContext.

Если вы создаете приложение с поддержкой рукописного ввода, используйте свойства RecognizerContext объекта Factoid и WordList для задания контекстов.

Строковые значения имен в входных областях, определенных в перечислении InputScope, могут передаваться в свойство Factoid, разделенное открывающим (! и закрывающим). Например, чтобы задать контекст для объекта RecognizerContext и сделать акцент на символах, используемых в URL, используйте синтаксис, показанный в следующих примерах C#.

theRecoContext.Factoid = "(!IS_URL)";

Заметка

Области ввода, как определено в перечислении InputScope, переопределяют фактоиды, доступные в предыдущих версиях Windows XP Tablet PC Edition SDK, однако они будут продолжать работать для обеспечения обратной совместимости.

 

Следующий пример C# задает свойство Factoid для почтовых кодов:

theRecognizerContext.Factoid = "(!IS_ADDRESS_POSTALCODE)";

Области ввода можно объединять с помощью синтаксиса регулярных выражений для рукописного текста. Дополнительные сведения об использовании синтаксиса регулярных выражений см. в разделе пользовательских областей ввода, связанных срегулярными выражениями.

Флаги распознавания можно задать на объекте RecognizerContext, чтобы повлиять на поведение распознавателя. Одним из таких флагов является флаг Coerce в перечислении InkRecognitionModesRecognizerContext. Флаг Coerce заставляет распознавателя возвращать результат, соответствующий определению заданного фактоида. Например, если у вас есть форма, требующая ввода числового количества пользователем, может быть полезно установить фактоид IS_NUMBER, а также задать свойству RecognitionFlags значение Coerce. В этом случае флаг Coerce гарантирует, что распознаватель возвращает только числа.

В следующем примере C# свойство RecognitionFlags устанавливается на значение Coerce:

theRecognizerContext.RecognitionFlags = RecognitionModes.Coerce;

При принятии решения установить флаг Coerce следует проявлять осторожность. Флаг заставляет распознавателя соответствовать только определению фактоида. Например, если задать область ввода IS_TELEPHONE_FULLTELEPHONENUMBER и флаг Coerce, распознаватель возвращает результаты, которые точно соответствуют определению только области ввода IS_TELEPHONE_FULLTELEPHONENUMBER. Если пользователь вводит "911" с областью ввода IS_TELEPHONE_FULLTELEPHONENUMBER и включенным набором флагов Coerce, распознаватель может вернуть либо пустую строку, либо случайную строку в формате (XXX) XXX-XXXX (где X — это цифра). Формат XXX не соответствует определению фактора IS_TELEPHONE_FULLTELEPHONENUMBER, хотя это действующий номер телефона.

Для получения списков поддерживаемых форматов для каждой области ввода см. справочник по InputScope.

Чтобы вернуть поле в параметр по умолчанию для распознавателя, задайте для объекта factoid значение IS_DEFAULT, как показано в следующем примере C#:

theRecgonizerContext.Factoid = "(!IS_DEFAULT)";

Для приложений, использующих элемент управления InkEdit, задайте тип фактоида для элемента управления, указав:

InkEdit1.Factoid = "(!IS_INPUTSCOPE)"

Где IS_INPUTSCOPE имя области ввода, которую вы хотите применить.

Элемент управления InkEdit не предоставляет объект RecognizerContext. Контекст все еще можно назначить с помощью свойства Factoid элемента управления InkEdit, но нельзя задать флаг WORDMODE.