如何在WPF中以编程方式添加事件处理程序,就像在Winform中一样。

25

这个winform指令的等效指令是什么:

this.button1.Click += new System.EventHandler(this.button1_Click);

如何在 WPF 中实现?

更新:也适用于滑块。声明时应使用哪个命名空间?

我的意思不是使用 XAML。

4个回答

24

类似于这样...

this.btnTest.Click+=new RoutedEventHandler(btnTest_Click);

实际上,滑块也是需要的。看起来与按钮不同。 - user310291

12

试试这个:

 button1.AddHandler(Button.ClickEvent, new RoutedEventHandler(button1_Click));

那么你需要创建一个像这样的函数

void button1_Click(object sender, RoutedEventArgs e)
    {
        throw new NotImplementedException();
    }

5
如果你是从XAML侧添加新事件,IDE会为你完成大部分工作。
例如,如果你输入:
<Button Name="button1" Click=

然后IDE会弹出一个下拉菜单,列出所有当前创建的事件。

您可以选择之前创建的事件之一,或通过选择“新事件处理程序”来创建一个新事件。

如果您选择“新事件处理程序”,则VS会自动在form.xaml.cs C#代码后台中为您添加框架。您只需在已经创建好的框架内添加您想要点击事件执行的任何操作即可。


1
是的,但对于像 OP 这样的人,在 UI 抽象层崩溃时了解事情的运作方式确实会有所帮助。 - Ed S.
@Ed Swangren,没错,上述技术正是我在我的编程经验中一直使用的方法,而且从未失败过,所以我会继续沿用它 :) - AmbiguousX
2
当然,我会这样做,因为我知道在幕后的事情是如何运作的。不幸的是,抽象最好由能够看穿它们的人使用 ;) - Ed S.
我不想使用XAML来完成这个,所以我的问题是。 - user310291

0

WPF不是一种新语言,也就是说,它的概念完全相同。唯一可能改变的是委托类型。所以,是的,你可以用同样的方式来做。


似乎在互联网上没有太多相关信息! - user310291
嗯,假设您知道按钮的类型,那就很简单了。我只用了两秒钟就找到了文档:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.buttonbase.click.aspx - Ed S.
正如您所看到的,委托类型是RoutedEventHandler,因此您需要分配这些之一,而不是在WinForms中分配EventHandler委托。 - Ed S.
我不是在问按钮:我知道按钮。我在问滑块。 - user310291
WPF的概念和之前的完全相同吗?我认为你确实知道WPF,因为在这里说到:掌握Windows® Presentation Foundation(WPF)最令人望而生畏的事情之一是有很多新构造要掌握。即使像Microsoft® .NET Framework的属性和事件这样的简单事物,在WPF中也有新的对应项,并带有附加功能和相关复杂性-特别是依赖属性和路由事件。然后还有所有全新的东西,比如动画、样式、控件模板和路由命令。有很多需要学习的东西。 - user310291
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接