У меня есть пользовательский элемент управления, который встроен в другой элемент управления. у обоих этих элементов управления есть свои события mouseup, но когда я нажимаю usercontrol, автоматически запускается событие mouseup родительского элемента управления. Как я могу это остановить?

1
Ather Mohiuddin 24 Мар 2014 в 14:19
Проверьте, закрывает ли мышь дочерний элемент или нет.
 – 
Andrius Naruševičius
24 Мар 2014 в 14:22
Не могли бы вы уточнить?
 – 
Ather Mohiuddin
24 Мар 2014 в 14:24

2 ответа

Лучший ответ

Событие MouseUp имеет стратегию восходящей маршрутизации, что означает, что оно будет пузыриться от потомков к предкам. Чтобы остановить распространение, отметьте событие как обработанное в дочернем обработчике событий:

e.Handled = true;

Вы можете узнать больше о стратегиях маршрутизации событий на MSDN.

4
Thomas Levesque 24 Мар 2014 в 14:24

Я рекомендую вам прочитать основы Routed Eventings, чтобы лучше понять, как обработка событий работает в WPF. Вы можете проверить эту ссылку MSDN, чтобы читать дальше.

Лучше всего было бы идентифицировать OriginalSource (исходный объект, инициировавший событие), привести его к вашему дочернему типу и затем продолжить выполнение вашей логики.

Например:

void Handler(object obj, RoutedEventArgs e)
    {
        YourChildControl c = e.OriginalSource as YourChildControl;
        if (c != null)
        {
            //this will execute when 
            //do whatever you wanted to do.
        }
        e.Handled = false;
    }
0
Sreejith Nair 24 Мар 2014 в 14:39