2013-02-13 2 views
0

타사 API의 개체 인 FrameworkElement을받는 WPF 응용 프로그램이 있습니다.FrameworkElement 개체의 WPF MouseDown 이벤트

해당 개체에 이벤트를 등록하고 싶습니다.
이것이 가능합니까? 이 작동하지 :

public void DisplayControl(FrameworkElement control) 
    { 
     control.MouseEnter += new MouseEventHandler(Control_MouseEnter); 
     control.MouseDown += new MouseButtonEventHandler(Control_MouseDownFromElement); 
     VideoGrid.Children.Add(control); 
    } 

    void Control_MouseDownFromElement(object sender, EventArgs e) 
    { 
     lblOutput.Content = string.Format("Sender is: " + sender.ToString()); 
    } 
    void Control_MouseEnter(object sender, EventArgs e) 
    { 
     (sender as FrameworkElement).Focus(); 
    } 
+0

왜 이것이 작동하지 않습니까? 컨트롤이 이미 다른 컨트롤의 자식이면,'VideoGrid'에 추가 할 수 없습니다. –

+0

이 특정 경우에 컨트롤은 WinForm 컨트롤을 포함하는 WindowsFormsHost이며 DisplayControl은 이미 래핑 된 것으로 나타납니다. 컨트롤이 제대로 표시되지만 이벤트는 발생하지 않습니다. – ilansch

답변

0

한 가지 가능한 이유는 제어 공급자가 의도적으로 ... 당신은 0.01 불투명도 원래 컨트롤의 위쪽에 컨트롤 (예를 들어 그리드)를 추가하려고 할 수있는 이벤트를 차단하는 수단 사실상 컨트롤을 추가 한 우리는 사용자에게 보이지 않는 우리는 눈에 보이지 않는 컨트롤의 모든 이벤트를 ... 쓸 수

업데이트 ... 그 이벤트를 추가 불투명도 0.01 그리드를 만드는이 같은

뭔가 그리드를 추가하고 그리드를 비디오 그리드에 추가하십시오. 그래서 ... 그는 비디오 그리드 거기에 컨트롤이 될 것입니다 그리고 컨트롤의 상단에 불투명도 때문에 보이지 않는 그리드 것입니다 귀하의 이벤트는 그리드에서 작동합니다 ... 일치하는 그리드에 동일한 높이와 너비를 제공해야합니다 귀하의 제어 높이와 너비 ....

Grid grd = new Grid(); 
grd.Opacity = 0.01; 
grd.MouseDown += new MouseButtonEventHandler(Grid_MouseDown_1); 
VideoGrid.Children.Add(control); 
VideoGrid.Children.Add(grd) 
+0

다음을 의미합니다 : Grid grd = new Grid(); grd.Opacity = 0.01; grd.Children.Add (카메라); grd.MouseDown + = 새 MouseButtonEventHandler (Grid_MouseDown_1); VideoGrid.Children.Add (grd); 작동하지 않습니다 – ilansch

+0

@ilansch 답변을 업데이트했습니다. – Bathineni

관련 문제