2011-06-23 41 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事件...