Как запретить выбор пузырьков в WPF TreeView?

У меня есть иерархический объект TreeView с некоторой структурой:

  • Main level
    • second level 1
    • второй уровень 3
    • второй уровень 2

Проблема в том, что когда я выбираю элемент на втором уровне, он запускает событие «выбрано» для элемента основного уровня. Как я могу отрицать это? Я пытаюсь использовать некоторые трюки с логическим флагом и свойством исходного кода, но мне это не удалось. e.Handled = true и не дают мне результата.

Спасибо за любые советы и извините за мой плохой английский!


person Dmitriy    schedule 26.01.2011    source источник
comment
опубликуйте соответствующий XAML и, если возможно, код программной части, как и все.   -  person Nawaz    schedule 26.01.2011
comment
Я нахожу ошибку. Событие основного уровня срабатывает, когда я использую загрузочный экран-заставку в другом потоке графического интерфейса (он запускает другое окно в ручном положении). Когда я комментирую вызов spashscreen, он стал нормальным :(.   -  person Dmitriy    schedule 26.01.2011


Ответы (2)


События, добавленные с помощью AddHandler, игнорируют флаг e.Handled, что, скорее всего, в вашем случае. Можете ли вы проверить, равен ли Source события OriginalSource, и если да, то выйти из обработчика?

person Community    schedule 26.01.2011

Проблема была в какой-то странной ошибке в моем коде. Когда я использую заставку в своем приложении, срабатывает событие для основного уровня. Когда я отключаю заставку - он отлично работает с e.Handled = true; обманывать.

Итак, я вызываю второй экран-заставку в конце обработчика события выбранного элемента на 0 мс, и он работает.

Спасибо всем.

person Dmitriy    schedule 26.01.2011