2014-03-31 25 views
1

當我在鼠標點擊畫布上使用System.Windows.Media.VisualTreeHelper.HitTest時,它始終返回頂部的元素。我的意思是如果有兩個元素相互重疊,我得到的是在畫布中具有較高ZIndex的元素。我可以在WPF Canvas中使用較低ZIndex的HitTest元素嗎?

我也嘗試過this way,但即使在我製作了IsHitTestVisible = False之後,它仍然向我返回了同樣的一張。

有沒有可能讓元素「下」?

在此先感謝!

回答

3

請參閱此處的「命中測試和Z順序」一節:Hit Testing in the Visual Layer,以及代碼示例:VisualTreeHelper.HitTest Method

總之,你需要使用的HitTest()方法是採取HitTestResultCallback一個,然後從回調返回HitTestResultBehavior.Continue直到你達到你要找的元素:

Point pt = ... 
VisualTreeHelper.HitTest(myCanvas, null, 
         new HitTestResultCallback(MyHitTestResult), 
         new PointHitTestParameters(pt)); 
... 

private HitTestResultBehavior MyHitTestResult(HitTestResult result) 
{ 
    DoSomethingWith(result.VisualHit); 

    //Set the behavior to return visuals at all z-order levels. 
    return HitTestResultBehavior.Continue; 
} 
+0

創造奇蹟!我花了一些時間來調整它,但是當我做到時 - 它變得很棒! – GoMati

相關問題