0

我有一个FrameworkElement从 3rd 方 API 接收对象的 WPF 应用程序。

我想在这些对象上注册事件。
这可能吗?这不起作用:

    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(); 
    }
4

1 回答 1

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)
于 2013-02-13T10:11:53.040 回答