2009-10-23 4 views
0

Я вложил ListView в wpf. Пользователь может дважды щелкнуть элемент списка и открыть документ позиции. Итак, у меня есть ListView1_MouseDoubleClick и ребенок listview2 ListView2_MouseDoubleClick.Как обращаться с mousedoublick нажмите лучше?

Но, когда пользователь дважды щелкает элемент listview2, listview1 также принимает событие MouseDoubleClick.

Итак ... для того, чтобы решить эту проблему, насколько я знаю, есть два решения:

A) Добавить флаг Его и установить его в ложный

code: 
Listview2_mousedoubleclick() 
{ 
    flag=true; 
} 

ListView1_mousedoubleclick() 
{ 
    if (flag==true) { flag=false;return} 
} 

B) Используйте VisualTreeHelper и проанализируйте e.Source, чтобы найти, какой должен отвечать ...

Вопрос: В каком направлении лучше?

ответ

1

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

+0

Да! я просто хочу остановить цепочку передачи событий. Я попробовал e.Handled = true; но ListView1 все еще может получать событие щелчка мыши. // REF: private void ListView2_MouseDoubleClick (отправитель объекта, MouseButtonEventArgs e) – ariso