试图在不调用父母事件的情况下调用孩子的事件

时间:2014-03-24 10:19:51

标签: c# wpf

我有一个嵌入另一个控件的usercontrol。这两个控件都挂起了mouseup事件但是当我按下usercontrol时,会自动触发其父控件mouseup事件。我怎么能阻止这个?

2 个答案:

答案 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;
    }