2017-05-30 43 views
0

我正在爲遊戲手柄編寫幫助程序,因此我需要調用可能分配給焦點下的按鈕(如果有)的所有點擊處理程序。用於UWP的PerformClick模擬器

類似的東西:

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

方法PerformClick由WinForms的支持,但我找不到UWP模擬。有沒有?或者也許有辦法讓一組Click事件處理程序分配給ButtonBase並調用它們?

回答

0

可以執行Click這樣的 -

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

作品!謝謝。如果按鈕引用可以是ButtonBase而不是Button,那麼它會更方便(也更自然),因爲Click事件實際上是在ButtonBase中定義的。我的按鈕都是從ButtonBase派生的用戶控件。 – cyanide

+0

@cyanide耶,不幸的是另一個受到保護。 –

+1

是的,我已經注意到了。有一個構造函數ButtonBaseAnimationPeer(ButtonBase),但它受到保護。順便說一句,不是唯一的UWP情況下,當一個有用的構造函數被保護或不公開。 WPF給予更多的自由。 – cyanide