wpf - 在 WPF 中,我可以像在 Javascript/Jquery 中一样将相同的点击处理程序一次附加到多个按钮吗?

标签 wpf wpf-controls

我有多个按钮而不是做

this.button1.Click += new System.EventHandler(this.button_Click);
this.button2.Click += new System.EventHandler(this.button_Click);
etc.
this.button10.Click += new System.EventHandler(this.button_Click);

我希望能够在伪代码中做这样的事情:
this.button*.Click += new System.EventHandler(this.button_Click);

在 Javascript 中,WPF 中可能有类似的东西吗?

最佳答案

在 WPF 中,Button.Clickrouted event ,这意味着事件在可视化树中向上路由,直到它被处理。这意味着您可以在 XAML 中添加一个事件处理程序,如下所示:

<StackPanel Button.Click="button_Click">
    <Button>Button 1</Button>
    <Button>Button 2</Button>
    <Button>Button 3</Button>
    <Button>Button 4</Button>
</StackPanel>

现在,所有按钮都将为其 Click 事件共享一个处理程序 (button_Click)。

这是跨位于同一父容器中的一组控件处理同一事件的简单方法。如果你想从代码中做同样的事情,你可以使用 AddHandler 方法,像这样:
AddHandler(Button.ClickEvent, new RoutedEventHandler( button_Click));

这将为窗口中的每个按钮单击添加一个处理程序。你可能想给你的 StackPanel 一个名字(比如,“stackPanel1”)并且只为那个容器做:
stackPanel1.AddHandler(Button.ClickEvent, new RoutedEventHandler( button_Click));

关于wpf - 在 WPF 中,我可以像在 Javascript/Jquery 中一样将相同的点击处理程序一次附加到多个按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4780132/

相关文章:

wpf - DataContext 未绑定(bind)在 Style.Trigger 中

wpf - 如何处理 WPF 中的鼠标滚轮单击事件?

c# - WPF 中的自定义内容控件

.net - WPF标签中的自动换行符

c# - 打开 PathListBoxScrollBehavior WPF

c# - ShowInTaskbar 在 WPF 中不能可靠地工作

WPF:我如何知道 Binding RelativeSource 是否找到了祖先

c# - 需要一个非常定制的大型 Winforms 网格

c# - 控件作为依赖属性/WPF

WPF将ControlTemplate的内容绑定(bind)到Control中的Property?