2011-05-09 116 views
0

我已閱讀了一些有關相關問題的文章,這似乎是不一致的。WPF事件捕獲。控制觸發mouseup但不mousedown

我有一個datagrid控件,我需要捕獲鼠標單擊時的位置。我有代碼在mouseup和mousedown事件處理程序中執行此操作。 mousedown是我想要的,但是這個事件永遠不會被解僱。我把代碼放在那裏,設置一個斷點,它永遠不會達到那個點。然而,mouseup會像它應該那樣開火,但它不是我需要的事件,而且我得到了不可預知的結果。

是否有任何文章解釋發生了什麼?我認爲它是某種路由事件問題。但爲什麼會mouseup工作,但mousedown不?我該如何修復我的代碼,以便所有事件在他們應該觸發時觸發?

回答

0

由於datagrid中的單元格正在捕獲MouseDown事件,因此發生了此問題。您可以嘗試通過訂閱該事件的代碼:

DataGridName.AddHandler(MouseDownEvent, new MouseButtonEventHandler(DataGridName_MouseDown), true); 

或者,如果這不是你想要做的還有還有什麼,我相信,這是已分配給一個DataGrid,您可以使用一個PreviewMouseDown事件。

我希望這會有所幫助。

+0

夠簡單,這似乎工作。這真的很奇怪,這種解決方法在WPF中是必需的。我只是習慣於射擊事件。如果你有一個mousedown事件,並且你控制了控制權,事件就像你期望的那樣激發。有什麼你知道嗎,如果我可以讀解釋這個奇怪的wpf行爲背後的韻和原因? - 再次感謝您的解決方案! – Mike 2011-05-09 16:18:46