2009-12-02 69 views
1

我需要繪製大量的WPF路徑。我已經將它們設置爲帆布的孩子。問題在於事件被隧道傳遞給路徑對象。這會降低性能。我知道覆蓋預覽方法解決了這個問題,但我是否真的必須覆蓋所有預覽方法..防止WPF事件隧道效應

回答

1

我認爲你可以在Canvas中捕獲事件並將e.Handled設置爲true。

0

我找到了解決辦法。我將路徑對象的IsHitTestVisible屬性設置爲false。現在他們不會放慢表現。

0

不復活舊的問題,但如果有例如按鈕而不是路徑,將IsHitTestVisible設置爲true將會不太合適,因爲它有效地防止了Click和其他事件。

在我的情況下,我有一個TabItem與一個PreviewMouseMove事件和一個非常TabItem的按鈕與Click事件沒有觸發。 問題是,如果您在父控件上獲得隧道事件(如PreviewMouseMove),它將在其子控件上「覆蓋」類似的事件。 一個可能的解決方案 - 爲我制定的一個 - 正在挑選不同的冒泡事件,如MouseMove

簡而言之,冒泡事件傳播到父元素,而隧道事件傳播到子元素;也有直接事件,根本不傳播。

關於這個問題的更多信息here