2012-05-17 67 views
2

我正在構建Metro風格的應用程序,我需要知道是否有方法以編程方式觸發按鈕點擊。在Metro風格應用程序中模擬按鈕點擊

我有這樣的PasswordBox和按鈕,在我的XAML:

<PasswordBox IsPasswordRevealButtonEnabled="True" KeyDown="On_text_KeyDown" x:Name="SomePW" FontSize="50" KeyDown="On_text_KeyDown" Margin="0,0,0,190" Height="67" Width="363"/> 
<Button Background="White" x:Name="Button_Go" Foreground="Black" Margin="20,0,0,190" Content="Go" FontSize="20" Click="Go_click" Height="67" Width="60"/> 

在我的C#代碼,這是一個處理按鍵在PasswordBox功能:

private void On_text_KeyDown(object sender, RoutedEventArgs e) 
    { 
     KeyEventArgs K = (KeyEventArgs)e; 

     if (K.Key == Windows.System.VirtualKey.Enter) 
     { 
      //<TO-DO> Simulate Button Click Here 
     } 

    } 

的問題是我似乎無法找到一種方法來模擬按鈕點擊...有人可以幫忙嗎?

+3

你問關於_visually_模擬按鈕點擊嗎? – Tim

+0

@ColeJohnson這不過是一個示例/測試應用程序...您的評論是離題,有點冒犯.. –

+0

@Tim不,我只是想發佈一個點擊事件 –

回答

3

簡單地調用這個函數是否存在問題,或者您是否在尋找通用方法來調用任何按鈕上的Click事件,或許是爲了自動執行它?

Go_click(this, new RoutedEventArgs()); 
+0

沒有,但我正在尋找一種方式來標記單擊事件 –

+0

似乎它可能是通過編寫一個桌面應用程序,將控制你的Metro風格應用程序,但不是從Metro風格應用程序的內部。請參閱http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/498588ae-51c0-43c9-8f31-e3d960f00297 –

+0

我還沒有找到任何其他方式,但直接調用click方法。所以我會接受這個答案。而且我不會一路創建一個新的應用程序,只是當用戶點擊編輯框輸入時模擬點擊... thx。 –

1

你可以試試這個:

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

另一種選擇是:

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

希望這有助於!

+0

WinRT不支持這些API,我猜這個問題是關於什麼的? –

+0

@FilipSkakun是的,我實際上是尋找替代這 –