首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止根元素中的事件,并让事件在容器(父级)级别触发?

如何阻止根元素中的事件,并让事件在容器(父级)级别触发?
EN

Stack Overflow用户
提问于 2014-12-04 09:17:09
回答 2查看 91关注 0票数 0

我和WPF一起工作。我的视觉树层次结构如下: RadDiagram > RadDiagramShape > mycontrol RadDiagramShape的内容是我控制的。

在myControl类中,我处理了(MouseLeftButtonDown)事件,我将拖放代码放入其中(我需要它在另一个地方)。所以,这是直接事件,而不是隧道或冒泡!

当我移动自定义控件(这是RadDiagramShape的内容)时,在RadDiagram中,它不会移动(它试图被拖动),因为MouseLeftButtonDown是在MyControl中处理的。它防止事件在视觉树上冒泡,防止任何父处理程序被告知事件.

我试图为RadDiagramShape和RadDiagram作为e.Handled = true;处理事件,但是它什么也没做,因为它是MouseLeftButtonDown,它在根元素中处理,所以它不会出现气泡或隧道,我也没有覆盖移动代码,我不想重写它。因为我以前试过,但它并没有让我像WPF那样稍微移动一下。

如何阻止根元素中的MouseLeftButtonDown事件并让事件在容器(父级)级别触发?

EN

回答 2

Stack Overflow用户

发布于 2014-12-04 10:58:01

如果'OriginalSource‘是您想要或不想要的相同的控件,请签入您的控件处理程序。

代码语言:javascript
复制
if ((e.OriginalSource is TextBox) && (e.OriginalSource as TextBox).Name == "TextBoxName")
            {
                //Do every thing you want            
            }

票数 1
EN

Stack Overflow用户

发布于 2014-12-09 08:30:54

谢谢莱拉·卡里米。你给了我方向,条件本身不起作用。但我提出了另一个条件,它起了作用

代码语言:javascript
复制
        void MyLabel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            MyLabel dc = (MyLabel)sender;
            if (dc.Parent.GetType() != typeof(RadDiagramShape))
            {///....drop it}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27290185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档