由于WPF中没有button.PerformClick()
方法,有没有一种方法可以通过编程单击WPF按钮?
发布于 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
接口。
发布于 2009-04-09 12:21:38
就像JaredPar说的,你可以参考Josh Smith的文章“走向自动化”。但是,如果您查看他的文章的评论,您会发现针对WPF控件引发事件的更优雅的方法
someButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
我个人更喜欢上面的那个,而不是自动化同行。
发布于 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
https://stackoverflow.com/questions/728432
复制相似问题