Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:单击画布内嵌套路径上的检测_C#_Wpf_Canvas_Path - Fatal编程技术网

C# WPF:单击画布内嵌套路径上的检测

C# WPF:单击画布内嵌套路径上的检测,c#,wpf,canvas,path,C#,Wpf,Canvas,Path,我在画布中有一组编程嵌套的路径。我基本上是想弄清楚点击冒泡是如何工作的。如何设置画布事件处理程序,以检查单击点是否也位于画布内部嵌套的路径上。这是我的基本偶数代码,如果路径没有嵌套,它就可以工作 如何添加冒泡点击检测 void Path_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var item = ((FrameworkElement)e.OriginalSource).DataContext as Path;

我在画布中有一组编程嵌套的路径。我基本上是想弄清楚点击冒泡是如何工作的。如何设置画布事件处理程序,以检查单击点是否也位于画布内部嵌套的路径上。这是我的基本偶数代码,如果路径没有嵌套,它就可以工作

如何添加冒泡点击检测

void Path_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
   var item = ((FrameworkElement)e.OriginalSource).DataContext as Path;

   if (item != null)
   {
      MessageBox.Show(item.Name);
   }
}

在画布上的事件UIElement.MouseLeftButtonUpEvent(路径从那里继承)上添加一个处理程序

theNestingCanvas.AddHandler(UIElement.MouseLeftButtonUpEvent , new RoutedEventHandler(target));

private void handler(object asd, RoutedEventArgs e)
{
    Path p = e.OriginalSource as Path;
    if (p != null)
    {
        //do whatever
    }
    e.Handled = true;
}
就像您捕获画布中尚未在其他地方处理的所有冒泡UIElement.MouseLeftButtonUp事件一样

当然,您也可以在Event
Path.MouseLeftButtonUpEvent
上添加处理程序,但之后您会问自己为什么还要捕获其他嵌套元素的MouseUp事件