首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WPF中以编程方式单击按钮?

如何在WPF中以编程方式单击按钮?
EN

Stack Overflow用户
提问于 2009-04-08 03:32:01
回答 6查看 139.7K关注 0票数 153

由于WPF中没有button.PerformClick()方法,有没有一种方法可以通过编程单击WPF按钮?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-08 03:38:09

WPF在这里采用了与WinForms略有不同的方法。他们没有将对象的自动化内置到API中,而是为每个负责自动化的对象创建了一个单独的类。在这种情况下,您需要ButtonAutomationPeer来完成此任务。

ButtonAutomationPeer peer = new ButtonAutomationPeer(someButton);
IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
invokeProv.Invoke();

Here是一篇关于这个主题的博客文章。

注意:在UIAutomationProvider程序集中定义了IInvokeProvider接口。

票数 143
EN

Stack Overflow用户

发布于 2009-04-09 12:21:38

就像JaredPar说的,你可以参考Josh Smith的文章“走向自动化”。但是,如果您查看他的文章的评论,您会发现针对WPF控件引发事件的更优雅的方法

someButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));

我个人更喜欢上面的那个,而不是自动化同行。

票数 199
EN

Stack Overflow用户

发布于 2011-03-16 20:10:57

如果要调用click event:

SomeButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));

如果你想让按钮看起来像是被按下的:

typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(SomeButton, new object[] { true });

在那之后就不会有压力了:

typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(SomeButton, new object[] { false });

或者使用ToggleButton

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/728432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档