提升WPF MouseLeftButtonDownEvent事件

The*_*ies 13 wpf events raise

我正在尝试通过使用以下代码将它冒泡到Visual树中来引发MouseLeftButtonDownEvent.

         MouseButtonEventArgs args = new MouseButtonEventArgs(Mouse.PrimaryDevice,0,     MouseButton.Left);            
        args.RoutedEvent = UIElement.MouseLeftButtonDownEvent;
        args.Source = this;
        RaiseEvent(args);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,较高级别的组件未收到此冒泡事件.我是否忽略了某些事情或者是否无法举起这个鼠标事件

Ray*_*rns 22

你的问题是你正在提出一个不起泡的事件.

MouseLeftButtonDownEvent被定义为RoutingStrategy.Direct,这意味着它仅被路由到接收事件的控件.

您想要使用Mouse.MouseDownEvent事件. UIElement和其他类在内部将其转换为MouseLeftButtonDownEvent.确保将e.ChangedButton设置为MouseButton.Left:

RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left)
{
  RoutedEvent = Mouse.MouseDownEvent,
  Source = this,
});
Run Code Online (Sandbox Code Playgroud)