Почему SelectionChanged переходит от ComboBox к родительскому TabControl?

Испытав это на себе, я сделал быстрый поиск и обнаружил, что SelectionChanged будет всплывать из ComboBox в родительский TabControl, если его не обработать в:

Почему в C# WPF мой TabControl Событие SelectionChanged срабатывает слишком часто?

Мой вопрос: почему? Что стоит за этим? Я чувствую, что упускаю что-то очень важное в WPF и событиях.


person Community    schedule 08.08.2011    source источник


Ответы (1)


Большинство событий в WPF будут всплывать (или туннелироваться) до тех пор, пока кто-то не установит Handled=true в аргументах события. Преимущество этого заключается в том, что предположим, что у вас есть несколько полей со списком в пределах одной вкладки — вы можете в одном месте обрабатывать изменения во всех этих полях. Вы можете сделать это в дополнение к обработке события отдельно для каждого поля со списком или также к обработке объединенного события еще выше в дереве, например, к мониторингу всех полей со списком во всем окне.

Это то, что WPF называет «маршрутизируемыми событиями». Хорошее введение в тему можно найти на http://msdn.microsoft.com/en-us/library/ms742806.aspx

person Robert Levy    schedule 08.08.2011