2009-07-07 5 views
6

Trong ứng dụng WPF của tôi, tôi có một số lần xem trang. Số lần xem trang này được liên kết với một lớp tùy chỉnh lớp (ví dụ: không phải là các mục có trong TreeviewItems). Vì vậy, tôi sử dụng một hierarchicalDataTemplate để kiểm soát cách cây render.Trong WPF, làm cách nào để lấy đối tượng dữ liệu được liên kết với mục Tree View bên dưới con trỏ chuột?

Khi chuột của tôi vượt qua mục xem dạng cây, tôi muốn lấy Đối tượng dữ liệu (ví dụ: cá thể lớp tùy chỉnh của tôi) được liên kết với mục chế độ xem dạng cây. Làm thế nào để tôi làm điều này?

Để làm rõ - Tôi cần đối tượng dữ liệu (không phải là UIElement) dưới con trỏ chuột.

Giả sử phương pháp của tôi để lấy đối tượng dữ liệu có chữ ký sau đây:

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

Trả lời

5

Something như thế này (chưa được kiểm tra):

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

Fantastic, đó chính xác là những gì tôi đang tìm kiếm. cảm ơn 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; 
}