如何像在 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芒果中使用语音文本以编程方式使用内置的芒果语音功能