FrameworkElement对象上的WPF MouseDown事件

时间:2013-02-13 09:58:51

标签: wpf events mouseevent frameworkelement

我有一个从第三方API接收FrameworkElement个对象的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(); 
    }

1 个答案:

答案 0 :(得分: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)