2009-07-07 5 views
6

Nella mia applicazione WPF, ho una vista ad albero. Questa treeview è associata a una classe personalizzata (ad esempio non TreeviewItems). Quindi io uso un hierarchicalDataTemplate per controllare come il rendering dell'albero.In WPF, come ottengo l'oggetto dati associato all'elemento della vista ad albero sotto il cursore del mouse?

Quando il mio mouse si trova su un elemento della vista ad albero, vorrei ottenere l'oggetto dati (ad esempio la mia istanza della classe personalizzata) associato all'elemento della vista ad albero. Come faccio a fare questo?

Per chiarire - Ho bisogno dell'oggetto dati (non di UIElement) sotto il cursore del mouse.

assuma il mio metodo per recuperare l'oggetto dei dati ha la seguente firma:

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

risposta

5

Qualcosa di simile (non testata):

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

Fantastico, questo è esattamente quello che stavo cercando. grazie 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; 
} 
Problemi correlati