2012-05-02 42 views
0

我開發了一個WPF應用程序,它繪製2D圖表上文件的數據。 用戶可以使用鼠標進行縮放和平移。 幾個圖可能會加載到WPF TabControl的不同選項卡中。繪圖本身由TabItem中的網格保存。將事件重新連接到WPF TabControl中的選定TabItem

每次我閱讀文件並生成相應的圖表時,我也將鼠標事件連接到包含圖表的網格。

它發生鼠標事件轉向連接到最後加載的圖表,當我選擇回其他任何TabItem,我沒有控制(縮放/平移)在它上面。

我沒有找到方法來重新將鼠標事件重新連接到我切換回的TabItem中的網格。

我會很感激任何提示。

莫蒂

回答

0

也許你可以一個處理程序連接到電網的MouseEnter事件。之後,您可以連接mouseevents。在創建網格的

grid.MouseEnter="Grid_MouseEnter" 

中的MouseEnter處理程序:

private void Grid_MouseEnter(object sender, MouseEventArgs e) 
{ 
    var grid = sender as Grid; 
    if (grid == null) 
     return; 

    grid.MouseWheel += a1_MouseWheel; 
} 

鼠標滾輪處理器

private void a1_MouseWheel(object sender, MouseWheelEventArgs e) 
{ 
    var grid = sender as Grid; 
    System.Diagnostics.Debug.WriteLine(grid.Name + " " + e.Delta); 
} 

我猜你從網格的mouseevents刪除處理!?

+0

問題是我不知道要重新連接事件。我不斷開事件處理程序,但只要我將它們連接到其他事件(在新的TabItem中),它們就會與之前的事件斷開連接。 – user1370434

+0

我無法重現該問題。我創建了一個WpfApplication,在內容中放置了一個按鈕和一個TabControl,用Click EventHandler連接了按鈕,在Click EventHandler中創建了一個Grid,將Grid.MouseWheel事件連接到EventHandler,將Grid添加到TabControl並顯示了一些MouseWheel EventHandler中的Debug.WriteLine調試代碼。它的工作原理,事件如果我添加新的TabItems並切換回另一個TabItem。 – csteinmueller

+0

我不確定您的應用程序是否重新生成了相同的條件。在我的,有一個TabControl。在每個TabItem中,我定義了一個Grid並將鼠標事件連接到它。每個新創建的TabItem都會很好地響應事件(縮放和平移網格中的圖表)。但是,當我選擇一個已經存在的TabItem時,我發現事件已經斷開。事件僅與最後定義的TabItem相關聯。 – user1370434

相關問題