2009-07-07 8 views
6

In meiner WPF-Anwendung habe ich eine Baumansicht. Diese Baumansicht ist an eine benutzerdefinierte Klasse (d. H. nicht TreeviewItems) gebunden. Daher verwende ich eine hierarchicDataTemplate, um zu steuern, wie der Baum rendert.Wie erhalte ich in WPF das Datenobjekt, das dem Strukturansichtselement zugeordnet ist, unter dem Mauszeiger?

Wenn sich meine Maus über einem Strukturansichtselement befindet, möchte ich das Datenobjekt (d. H. Meine benutzerdefinierte Klasseninstanz) mit dem Strukturansichtselement verknüpfen. Wie mache ich das?

Um zu verdeutlichen - ich brauche das Datenobjekt (nicht das UIElement) unter dem Mauszeiger.

Angenommen meine Methode das Datenobjekt hat die folgende Signatur abzurufen:

private object GetObjectDataFromPoint(ItemsControl source, Point point) 
{ 
    ... 
} 

Antwort

5

So etwas wie dieses (nicht getestet):

private object GetObjectDataFromPoint(ItemsControl source, Point point) 
{ 
    //translate screen point to be relative to ItemsControl 
    point = _itemsControl.TranslatePoint(point); 
    //find the item at that point 
    var item = _itemsControl.InputHitTest(point) as FrameworkElement; 

    return item.DataContext; 
} 
+0

Fantastisch, das ist genau das, was ich suchte. Danke Kent! – willem

2
private object GetObjectDataFromPoint(ItemsControl source, Point point) 
{  
    //translate screen point to be relative to ItemsControl  
    point = source.TranslatePoint(point, source);  

    //find the item at that point  
    var item = source.InputHitTest(point) as FrameworkElement; 

    return item.DataContext; 
} 
Verwandte Themen