Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button UWP的PerformClick模拟_Button_Uwp_Click - Fatal编程技术网

Button UWP的PerformClick模拟

Button UWP的PerformClick模拟,button,uwp,click,Button,Uwp,Click,我正在为Gamepad编写一个助手,所以我需要调用所有可能分配给焦点下按钮(如果有)的点击处理程序 诸如此类: (FocusManager.GetFocusedElement() as ButtonBase)?.PerformClick(); WinForms支持方法PerformClick,但我找不到UWP的类似方法。有吗?或者有一种方法可以获得一组分配给按钮库的单击事件处理程序并调用它们?您可以像这样执行单击- var ap = new ButtonAutomationPeer(YourB

我正在为Gamepad编写一个助手,所以我需要调用所有可能分配给焦点下按钮(如果有)的点击处理程序

诸如此类:

(FocusManager.GetFocusedElement() as ButtonBase)?.PerformClick();

WinForms支持方法
PerformClick
,但我找不到UWP的类似方法。有吗?或者有一种方法可以获得一组分配给按钮库的单击事件处理程序并调用它们?

您可以像这样执行
单击-

var ap = new ButtonAutomationPeer(YourButtonReference);
var ip = ap.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
ip?.Invoke();

作品非常感谢。如果按钮引用可以是ButtonBase而不是Button,那么会更方便(也更自然),因为Click事件实际上是在ButtonBase中定义的。我的按钮都是从ButtonBase派生的用户控件。@是的,不幸的是另一个受到保护。是的,我已经注意到了。有一个构造函数ButtonBaseAnimationPeer(ButtonBase),但它是受保护的。顺便说一句,当有用的构造函数受到保护或未公开时,这不是唯一的UWP情况。WPF提供了更多的自由。试图通过使用包装器克服保护:类AccessibleButtonBaseAutomationPeer:ButtonBaseAutomationPeer{public AccessibleButtonBaseAutomationPeer(ButtonBase所有者):基(所有者){}。编译正常,但GetPattern返回null!