У меня TreeView привязан к иерархии, состоящей из нескольких разных классов через HierarchicalDataTemplate
s. Когда элемент в дереве выбран, событие SelectedItemChanged
, конечно же, успешно всплывает вверх через родительские элементы, как и должно. То, что он не должен делать, но продолжает делать, продолжает расти после того, как я установил для e.Handled
значение true
.
Событие все равно будет срабатывать на родительском элементе, и RoutedPropertyChangedEventArgs
будет выглядеть точно так же, как был выбран родительский элемент; даже свойство OriginalSource
будет указывать на родительский элемент, а не на тот, который был выбран изначально. e.Handled
, конечно, будет ложным
.
Примерно такой же вопрос был задан здесь , но я не использую EventAggregator
или клиентские лицензии, и обходной путь, найденный здесь , не очень помогает, потому что я специально не нахожусь после события мыши.
Есть ли способ точно получить фактически выбранный элемент или принудительно остановить бурлящее безумие ( не прибегая к очень жестокому и неэтичному взлому с использованием глобальных переменных, о которых я могу думать)?
Спасибо за любые идеи.