powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Сброс фокуса контрола в окне wpf
3 сообщений из 3, страница 1 из 1
Сброс фокуса контрола в окне wpf
    #39115406
Oleg5555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Подскажи пожалуйста, как выполнить сброс фокуса контрола (на котором в данный момент установлен фокус)? Привести форму в состоянии как при загрузке, когда фокуса нет ни на одном контроле. Keyboard.ClearFocus() не помогает. Перевести фокус на какой-нибудь другой, специально для этого сделанный контрол какое-то костыльное решение. Не подойдет. Я думал, что для это простого действия есть какое-то просто решение. Но что-то ничего не нашел.
...
Рейтинг: 0 / 0
Сброс фокуса контрола в окне wpf
    #39115414
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Keyboard.ClearFocus() очищается фокус ввода, элемент в фокусе ввода имеет IsKeyboardFocused = true и this.IsKeyboardFocusWithin = true если содержимое этого элемента имеет фокус ввода.
В WPF Есть фокус ввода, и просто фокус. Простой фокус определяется свойством IsFocused, если в окне есть несколько FocusScope, то фокусов будет столько же, сколько и этих областей фокусирования.

класс FocusManager - относится к простому фокусу, а класс Keyboard к фокусу ввода.

Если ты хочешь изменить фокус ввода или фокус, то желательно это делать через диспетчер и приоритетом Input.
Чтоб сбросить фокус в FocusScope, выбери через фокус манагер корневой элемент. Его можно найти в визуальном дереве по IsFocusScope относительно того объект который находится в этой области или окно, оно по умолчанию является областью фокусировки.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Dispatcher.BeginInvoke(new DispatcherOperationCallback(OnFocusChanged), DispatcherPriority.Input, this);
        }

        private object OnFocusChanged(object arg)
        {
            Keyboard.ClearFocus();
            FocusManager.SetFocusedElement(this, this);
            return null;
        }
...
Рейтинг: 0 / 0
Сброс фокуса контрола в окне wpf
    #39115508
Oleg5555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлично! Спасибо за подробный ответ!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Сброс фокуса контрола в окне wpf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]