Подтвердить что ты не робот

Есть ли ссылка на поведение клавиатуры по умолчанию для элементов управления Silverlight 4?

В официальной документации Microsoft есть только один абзац, в котором упоминается, как элементы управления ведут себя на клавиатуре (по крайней мере, что я мог найти):

http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text

Ввод текста и элементы управления

Некоторые элементы управления реагируют на события клавиатуры с их собственной обработкой. Например, TextBox - это элемент управления, который предназначен для захвата, а затем визуально представляет текст, который был введен с помощью клавиатуры, и использует KeyUp и KeyDown в своей собственной логике для захвата нажатий клавиш, а также вызывает собственное событие TextChanged, если текст фактически изменился. Вы все равно обычно добавляете обработчики для KeyUp и KeyDown в TextBox или любой связанный элемент управления, предназначенный для обработки ввода текста. Однако, как часть его предполагаемого дизайна, элемент управления может не реагировать на все ключевые значения, которые направлены на него через ключевые события. Поведение специфично для каждого элемента управления. Например, ButtonBase (базовый класс для Button) обрабатывает KeyUp так, чтобы он мог проверять клавишу SPACEBAR или ENTER, который он считает эквивалентным левой кнопке мыши для повышения уровня события Click. Эта обработка события выполняется ButtonBase, переопределяя виртуальный метод OnKeyUp, и в своей реализации он устанавливает Handled = true. В результате любой родитель кнопки, прослушивающей ключевое событие в случае ПРОБЕЛ, не получит уже обработанное событие для своих собственных обработчиков. Другим примером является TextBox. Некоторые клавиши, такие как клавиши со стрелками, не считаются текстом TextBox и вместо этого считаются специфичными для поведения пользовательского интерфейса управления, а TextBox отмечает эти события как обрабатываемые.

Пользовательские элементы управления могут реализовать свое собственное поведение с переопределением ключевых событий, переопределяя OnKeyDown/OnKeyUp. Если ваш пользовательский элемент управления обрабатывает определенные ключи ускорителя или имеет поведение управления или фокуса, подобное сценарию, описанному для TextBox, вы должны поместить эту логику в свои собственные OnKeyDown/OnKeyUp переопределения.

Есть ли более полная ссылка где-нибудь?

Например, в AutoCompleteBox вы можете перейти к предложениям, нажав вверх/вниз, и выбрать один нажав enter и т.д. и т.д.

Конечно, должен быть лучший способ, чем фокусировать каждый отдельный элемент управления и нажимать каждую клавишу на клавиатуре, чтобы узнать:)

4b9b3361

Ответ 1

Посмотрите исходный код\Отражатель.

В обработке текстовых обработок есть много причуд, я сомневаюсь, что любой из них захочет документировать это. Например, событие KeyDown из TextBox не запускается, когда пользователь нажимает BackSpace, когда есть текст внутри элемента управления, но срабатывает, когда текст отсутствует, и т.д. Самый быстрый способ найти, как что-то работает, чтобы выкопать исходный код.

Я понял правильное правило: если по какой-то причине вам нужно знать, как будет вести себя какой-то элемент управления, некоторая ситуация не тратит время на то, чтобы попытаться закодировать (воспроизвести) эту ситуацию, просто получить Reflector и посмотреть исходный код.