我有一个嵌入另一个控件的usercontrol。这两个控件都挂起了mouseup事件但是当我按下usercontrol时,会自动触发其父控件mouseup事件。我怎么能阻止这个?
答案 0 :(得分:4)
MouseUp
事件有一个冒泡的路由策略,这意味着它会从后代冒泡到祖先。要停止传播,请将事件标记为在子事件处理程序中处理:
e.Handled = true;
您可以详细了解event routing strategies on MSDN。
答案 1 :(得分:0)
我建议您阅读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;
}