2015-07-14 2 views
2

Я играл с событиями в WPF и до сих пор у меня есть хороший пробег из свойств Source и Sourcesource событий, а также используя передающий элемент управления и FocusManager. Вот что происходит, когда цепочка событий начинает стрелять, есть ли способ узнать, какой контроль будет заканчиваться фокусом в конце, запрещающим любую промежуточную логику во всей цепочке событий?WPF - зная, какой контроль закончится фокусом

ответ

1

Я боюсь, что единственный надежный способ сделать это - фактически разрешить изменение фокусировки, а затем обработать его в некотором PreviewGotKeyboardFocus обработчике на верхнем уровне обзора.

Затем вы можете узнать, какой элемент управления будет получать фокус, и отменить изменение с помощью e.Handled = true.

PD. Есть функция во всех UIElements, которая называется PredictFocus, но она работает только с изменениями позиционного перемещения, а не с изменениями на основе табуляции (или специальной фокусировкой).

+0

Спасибо. В принципе, у меня есть ListView, который загружает значения в текстовые поля всякий раз, когда выбор ListView менялся, но я также хочу, чтобы он отменил выбор ListViewItems, когда выбор курсора выходит из ListView, но только для НЕКОТОРЫХ элементов пользовательского интерфейса. Мне удалось немного контролировать это, протестировав родительский элемент StackPanel в коллекции элементов управления, но код для реализации этого сложного набора взаимодействий становится сложным, и мне было интересно, есть ли способ уменьшить беспорядок. Я использую комбинацию PrevLeftMouseButtonDown, LitsView LostFocus и ListView Sel. –

Смежные вопросы