2010-02-25 52 views
1

在模型中,我有一個可觀察的對象集合。通過ItemsControl(和UserControl)我顯示這些元素(形狀)。XAML hittesting

現在我想在父畫布上進行測試。

例如,當我執行此代碼:

HitTestResult result = VisualTreeHelper.HitTest(allContent, new Point(70, 340)); 

我得到一個HitTestResult,但我想在此代表「點擊」形狀的模型對象。

是否有可能獲取對象?

回答

2

要到綁定到ListBoxItem的問題DataContext的,我這樣做:

HitTestResult result = VisualTreeHelper.HitTest(itemsContainer, position) ; 
FrameworkElement currentElement = result.VisualHit as FrameworkElement ; 

while((currentElement is ListBoxItem)==false 
    && currentElement!=itemsControlElement 
    && currentElement!=null) 
{ 
    currentElement = VisualTreeHelper.GetParent(currentElement) as FrameworkElement ; 
} 

if(currentElement != null) 
{ 
    object dataSource = currentElement.DataContext ; 
} 

如果切換堆棧步行尋找你的用戶控件,而不是一個ListBoxItem和改變itemsControlElement是無論您的ItemsControl容器是什麼,它都應該防止視覺樹的失控走路。