Предотвращение пользователя от вкладки за пределами кадра - PullRequest
0 голосов
/ 30 июня 2011

В моем приложении WPF у меня есть страница, которая содержит различные кнопки и рамку. Внутри этого фрейма несколько текстовых полей.

При запуске я установил фокус на первое текстовое поле внутри рамки. Можно ли каким-то образом убедиться, что Tab циклически повторяет только элементы внутри фрейма и не переходит на родительскую страницу?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 30 июня 2011

tabstop будет работать.

Теперь мое альтернативное решение - просто предположение: у первого элемента в вашем фрейме есть tabindex, равный 5, у последнего элемента в фрейме есть tabindex, равный 9. Возьмите элемент, который имеет максимальный tabindex в пределах рамки (то есть согласно tabindex 9). на PreviewKeyDown событие напишите следующий код:

private void frames_max_tabindex_element_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyValue == 9 )
            element_that_has_tabindex_equal_to_frames_min_tab_index_minus_1.Focus();
        }

краткое объяснение. (используя предположения для демонстрации идеи), когда фокус находится на элементе кадра с tabindex 9, нажатие клавиши tab вызовет событие PreviewKeyDown. внутри метода u устанавливаем фокус на элемент, у которого tabindex равен 4. и после отпускания клавиши tab окна устанавливают фокус на следующий tabindex, т. е. на элемент с tabindex, равным 5., поэтому из tabindex = 9 вы прыгаете на элемент с tabindex = 5

0 голосов
/ 30 июня 2011

Чтобы это исправить, я установил

KeyboardNavigation.TabNavigation="Cycle"

в кадре.

0 голосов
/ 30 июня 2011

набор IsTabStop=false для элементов управления вне кадра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...