2

我有这个可以以编程方式按下按钮的代码,但我想要一个适用于 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. 
}
4

2 回答 2

9

您可以使用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();
}
于 2012-04-13T21:05:00.317 回答
-1

另一种方法是在按钮上引发 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));
}

假设这MyToggleButtonToggleButton在代码隐藏或 xaml 中定义的x:Name

于 2017-05-30T09:40:29.180 回答