2012-09-20 55 views
2

我想在C#xaml中以編程方式單擊按鈕。因爲我發現沒有像PerformClick這樣的方法。還有什麼其他的選擇呢。Windows 8按鈕以編程方式在C#和Xaml中單擊

其實我有10個按鈕的設置:像btn1,btn2,btn3等名稱... 我有一個數字從1到10的基礎上,我需要點擊這些按鈕。我打算通過使用

ParentControl.FindName('btn' + number) 

然後再從中激發事件。但由於在Windows 8 C#中沒有PerformClick方法,因此我需要一個替代方案。

的RaiseEvent enter image description here

+0

釦子必然'ICommand'實例? – Dennis

+0

沒有按鈕沒有綁定到ICommand –

回答

6

這裏是如何做到這一點...

比方說,你有這個按鈕在你XAML文件中定義:

<Button Grid.Column="0" Grid.Row="0" x:Name="DefaultSnooze" Content="Default Snooze" Click="SendToast_Click" Height="34" Width="134"/> 

那麼做到這一點在你的代碼,你想要的Click事件處理程序代碼的背後以編程方式執行:

ButtonAutomationPeer peer = new ButtonAutomationPeer(DefaultSnooze); 

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

我測試了它,現在它工作得很好。 :)


來源:How to programmatically click a button

-1

您應該能夠使用:

RaiseEvent(new RoutedEventArgs(Button.ClickEvent, myButton)); 

在XAML視圖中的代碼隱藏。

RaiseEvent可用於任何UIElement派生類。

+0

我試圖使用它,但這些在UIElement中沒有引發事件的方法。請看上面的快照 –

+0

@BalrajSingh不,不是一種靜態方法。嘗試使用「RaiseEvent」,它應該在那裏。 –

+0

我試圖找到該事件。你能告訴我在哪裏可以找到它嗎?由於WinRT框架對我來說是新的。我試過但無法找到。 –

相關問題