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

Posted

技术标签:

【中文标题】如何像在 Winform 中那样以编程方式在 WPF 中添加事件处理程序【英文标题】:How to add event handler programmatically in WPF like one can do in Winform 【发布时间】:2011-06-07 11:53:25 【问题描述】:

这条winform指令相当于什么:

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

在 WPF 中?

更新:也适用于滑块。我应该声明什么命名空间?

我的意思是不要使用 XAML。

【问题讨论】:

【参考方案1】:

这样的……

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

【讨论】:

其实也需要滑块。似乎与按钮不同【参考方案2】:

试试这个:

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

那么你必须创建一个这样的函数

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

【讨论】:

【参考方案3】:

如果您从 XAML 端添加新事件,IDE 会为您完成大部分工作。

例如,如果您键入

<Button Name="button1" Click=

然后 IDE 将弹出一个下拉列表,其中包含您当前创建的所有事件。

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

如果您选择“New Event Handler”,那么 VS 会自动在 form.xaml.cs C# 代码隐藏中为您添加骨架。您只需在已创建的骨架中添加您希望单击事件执行的任何操作即可。

希望这会有所帮助!

【讨论】:

是的,但它有助于像 OP 这样的人真正了解 UI 抽象层崩溃时的工作原理。 @Ed Swangren,这绝对是真的,上面的技术正是我在我的小编程经验中一直使用的技术,它还没有失败,所以我一直在努力:)跨度> 当然,我会这样做,因为我知道事情在幕后是如何运作的。不幸的是,抽象最适合能看穿它们的人使用;) 我不想为此使用 xaml,所以我的问题。【参考方案4】:

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

【讨论】:

对我来说似乎不是这样。例如按钮和滑块看起来不像winform中的相似。仍在为滑块寻找正确的语法。 不是语法问题;无论您的 UI API 是 WinForms 还是 WPF,您都在使用 C#。您可能只是没有分配正确的委托类型。它有助于告诉我们您收到什么错误。 @Ed Swangren,但是从 Winforms 到 WPF 的某些库不是略有不同吗?我知道只是在 winforms 和 Silverlight 中编程,虽然它确实都是 C# 代码隐藏,但对于完全相同的任务,语法/属性名称是不同的。不过,WPF 可能会有所不同。不过,我认为这三个都使用了稍微不同的库。我可能错了。 您将语法与 API 混淆了。语法由语言规范定义。是的,图书馆是不同的,这就是我上面所说的。 @Ed Swangren,啊,好吧,对不起,我误解了你的意思

以上是关于如何像在 Winform 中那样以编程方式在 WPF 中添加事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

以 Android 编程方式启用 GPS(无需导航到位置设置)

如何在WP7芒果中使用语音文本以编程方式使用内置的芒果语音功能

WinForm C#如何将方法附加到以编程方式创建的控件

以编程方式将 FAB 卷回

像在 Eclipse 中那样自动导入 IntelliJ IDEA 中的类的任何方式(或快捷方式)?

如何像在 iOS 中一样在 WP8 中使用 Prefix.pch?