Search results for 'hittest'

HitTest를 통한 마우스 아래의 컨트롤 구하기

WPF 어플리케이션이든 아니든 마우스가 위치한 곳의 컨트롤을 알아야 할 때가 종종 있다.
다른 방식으로도 마우스 아래에 있는 컨트롤을 알아낼 수 있지만 WPF라면 아래와 같이 VisualTreeHelper클래스의
HitTest를 이용해서 컨트롤을 얻어오는 방법도 있다.

T GetItemAtLocation(Point location)
{
    T foundItem = default(T);
    HitTestResult hitTestResults = VisualTreeHelper.HitTest(treeView,location);
    
    if(hitTestResults.VisualHit is FrameworkElement)
    {
        object dataObject = (hitTestResults.VisualHit as 
            FrameworkElement).DataContext;

        if(dataObject is T)         {             foundItem = (T)dataObject;         }     }

    return foundItem; }



위 메소드의 사용법은 이렇게 될 수 있다.
void treeView_Drop(object sender,DragEventArgs e)
{
    if(e.Data.GetDataPresent(typeof(Task)))
    {
        Task sourceTask = (Task)e.Data.GetData(typeof(Task));
        Task targetTask = GetItemAtLocation(MouseUtilities.GetMousePosition());

        // Code to move the item in the model is placed here...     } }


2008/03/21 12:09 2008/03/21 12:09
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다