如何以编程方式单击 TextBlock?

时间:2021-01-08 10:06:51

标签: c# wpf unit-testing

我有一个 TextBlock MouseDown 事件:

tb.MouseDown += (s, e) => {
  ToSp.Children.Add(CreateTbAlp((s as TextBlock).Text, ToSp));
  CheckAnswer();
};

在单元测试中我需要测试它。我试过了:

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

但在这种情况下,我收到错误

<块引用>

System.NullReferenceException

和这个一样

typeof (TextBlock)
  .GetMethod("MouseDown", BindingFlags.Instance | BindingFlags.NonPublic)
  .Invoke(tb, new object[0]);

还有其他方式可以通过编程方式点击 TextBlock 吗?

1 个答案:

答案 0 :(得分:0)

TextBlock.RaiseEvent(new RoutedEventArgs(TextBlock.MouseDown));