2014-12-04 47 views
0

我正在使用WPF。 我的視覺樹層次如下: RadDiagram> RadDiagramShape> MyControl RadDiagramShape的內容是mycontrol。在我的控制類中,我處理了(MouseLeftButtonDown)事件,我在其中放置了拖放代碼(我需要它在另一個地方)。所以,這是直接事件不隧道或冒泡!如何阻止根元素中的事件並讓事件在容器(父級)級別中觸發?

當我移動RadDiagram的RadDiagramShape內容的自定義控件時,它不會移動(它試圖被拖動),因爲MouseLeftButtonDown已在MyControl中處理。 它防止事件冒泡Visual樹,阻止任何父處理程序被通知事件。

我試圖處理該事件的RadDiagramShape併爲RadDiagram爲e.Handled = true; 但它沒有采取任何行動,因爲它的MouseLeftButtonDown,它的根元素內部處理,這樣,就不會起泡或隧道,我沒有覆蓋移動代碼,我不想重寫它。因爲我之前嘗試過,並沒有給我提供WPF中內置的相同的輕微移動。

如何阻止根元素中的MouseLeftButtonDown事件,並讓容器(父級)級別中的事件觸發?

回答

1

請檢查你的控制處理程序,如果'OriginalSource'是你想要或不想要的控制。

if ((e.OriginalSource is TextBox) && (e.OriginalSource as TextBox).Name == "TextBoxName") 
 
      { 
 
       //Do every thing you want    
 
      }

0

謝謝萊拉卡里米。你給了我方向,條件本身並不起作用。但我把另一個條件,它的工作

 void MyLabel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      MyLabel dc = (MyLabel)sender; 
      if (dc.Parent.GetType() != typeof(RadDiagramShape)) 
      {///....drop it} 
} 
相關問題