2011-06-23 88 views
2

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

如何添加冒泡点击检测?

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

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

回答

1

您对事件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事件哪些在其他地方尚未处理...

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