У меня есть пользовательский элемент управления, который встроен в другой элемент управления. у обоих этих элементов управления есть свои события mouseup, но когда я нажимаю usercontrol, автоматически запускается событие mouseup родительского элемента управления. Как я могу это остановить?
2 ответа
Событие MouseUp
имеет стратегию восходящей маршрутизации, что означает, что оно будет пузыриться от потомков к предкам. Чтобы остановить распространение, отметьте событие как обработанное в дочернем обработчике событий:
e.Handled = true;
Вы можете узнать больше о стратегиях маршрутизации событий на MSDN.
Я рекомендую вам прочитать основы 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;
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.