WPF 和路由事件

发布于 2024-07-29 23:02:39 字数 227 浏览 3 评论 0原文

我有一个 WPF 窗口,其中有一个按钮位于 stackPanel 内,而 stackPanel 位于另一个 stackPanel 内。

我为 MouseDown 事件的按钮编写了一个事件处理程序。 我想为按钮和父级(堆栈面板)以及父级的父级执行此 eventHandler 三次

我如何通过仅编写一个事件处理程序来使用路由事件实现这一目标? 我不想重复事件处理程序代码。

谢谢

I have a WPF window, which has a button that is inside a stackPanel, which is inside another stackPanel

I wrote an event handler for the button for the MouseDown event.
I want to execute this eventHandler three times for the button and the parent (stack panel) and the parent's parent

How can I achieve that with the routed event, by writing only one event handler?
I don't want to repeat the event handler code.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乞讨 2024-08-05 23:02:40
  1. 实现从 Button 和 StackPanel 的事件处理程序调用的方法。
  2. 将 args 的 Handled 属性设置为 false。
  3. 或者您可以在 GenericHandler 方法中使用布尔参数,以便您可以决定是否应该让事件冒泡。

    void GenericHandler(对象发送者, RoutedEventArgs args) 
      

    {
    // 检查此处参数的类型并完成您的工作。

    args.Handled = false;   // 这让事件冒泡。 
      ... 
      

    }

  1. Implement a method to be called from the event handlers of the Button and StackPanel's.
  2. Sets the Handled property of the args to false.
  3. Or you can have a Boolean parameter in your GenericHandler method so that you can decide whether it should let the event bubble.

    void GenericHandler(object sender, RoutedEventArgs args)
    

    {
    // Check for the type of the args here and do your work.

    args.Handled = false; // this lets the event bubbled up.
    ...
    

    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文