2012-04-13 82 views
0

我有這個代碼可以編程方式按下按鈕,但我想要一個版本爲ToggleButton工作。如何以編程方式推動ToggleButton?

public static void PushButton(Button b) 
{ 
    ButtonAutomationPeer peer = new ButtonAutomationPeer(b); 
    System.Windows.Automation.Provider.IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as System.Windows.Automation.Provider.IInvokeProvider; 
    invokeProv.Invoke(); 
} 

所以我嘗試了ToggleButtonAutomationPeer ...

public static void PushButton(ToggleButton b) 
{ 
    ToggleButtonAutomationPeer peer = new ToggleButtonAutomationPeer(b); 
    System.Windows.Automation.Provider.IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as System.Windows.Automation.Provider.IInvokeProvider; 

//But invokeProv is null. Peer is ok. 
} 
+0

在XAML中定義的ToggleButton我知道這是這個問題,但你真的需要做的是什麼?如果你綁定並通過命令等,你可以讓你的生活更輕鬆 - 但我沒有完整的故事,只是一個檢查:) – NSGaga 2012-04-13 22:56:34

回答

5

可以使用Toggle Button Automation Peer

public static void PushToggleButton(ToggleButton b) 
{ 
    ToggleButtonAutomationPeer peer = new ToggleButtonAutomationPeer(b); 
    System.Windows.Automation.Provider.IToggleProvider toggleProvider = peer.GetPattern(PatternInterface.Toggle) as System.Windows.Automation.Provider.IToggleProvider; 
    toggleProvider.Toggle(); 
} 
0

另一種方式來做到這一點是按鈕養ClickEvent。

//check that the button is untoggled 
if (this.MyToggleButton.IsChecked == false) 
{ 
    //set button toggled 
    this.MyToggleButton.IsChecked = true; 
    //then raise a click evt 
    this.MyToggleButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 
} 

假設MyToggleButton在代碼隱藏或通過x:Name

相關問題