У світі Windows користувач може працювати в будь-який момент часу лише з одним елементом управління. Елемент, який в даний момент отримує натискання клавіші користувачем, має фокус введення. Іноді такий елемент виглядає трохи по-іншому. Наприклад, кнопка WPF, що має фокус, набуває синього відтінку.
Щоб елемент керування міг отримувати фокус, його властивість Focusable повинно мати значення true. За замовчуванням це так для всіх елементів управління. Цікаво, що властивість Focusable визначено як частина класу UIElement: це означає, що інші елементи, які не є елементами управління, теж можуть отримувати фокус. Зазвичай в класах, які не є елементами управління, властивість Focusable за замовчуванням має значення false. Але йому можна присвоїти значення true. Спробуйте зробити це на прикладі контейнера компонування на зразок StackPanel: коли він отримає фокус, навколо панелі з'явиться пунктирна рамка.
Щоб перемістити фокус з одного елемента на інший, користувач може натиснути кнопку миші або клавішу
По суті, при натисканні клавіші
Якщо необхідно управляти послідовністю переходів, можна задати властивість TabIndex кожного елемента управління, щоб пронумерувати їх в потрібному порядку. Елемент з нульовим значенням властивості TabIndex отримує фокус першим, а потім - елементи з великим значенням цієї властивості (наприклад, 1, 2, 3 і т.д.). При наявності декількох елементів з однаковими значеннями TabIndex WPF виконує автоматичну передачу фокуса, коли фокус отримує найближчий елемент в послідовності.
За замовчуванням властивість TabIndex у всіх елементах управління має значення Int32.MaxValue. Це означає, що можна призначити певний елемент в якості стартової точки у вікні, присвоївши його властивості TabIndex значення 0. Для інших елементів у вікні залишається автоматична навігація, і користувач буде переходити по ним від даної стартової точки в порядку визначення цих елементів.
Властивість TabIndex визначено в класі Control, там же, де і IsTabStop. Властивості IsTabStop можна привласнити значення false, щоб виключити елемент управління з послідовності переходів. Різниця між IsTabStop і Focusable полягає в тому, що елемент управління з властивістю IsTabStop, рівним false, може отримати фокус іншим шляхом - або програмно (коли в коді викликається метод Focus ()), або при натисканні кнопкою миші.
Елементи управління, які є невидимими або заблокованими (затінені) зазвичай не включаються в послідовність переходів і не активізуються, незалежно від значень властивостей TabIndex, IsTabStop і Focusable. Щоб приховати або заблокувати елемент управління, використовуються властивості Visibility і IsEnabled, відповідно.