首页 > 解决方案 > 如何以编程方式单击 TextBlock?

问题描述

我有一个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编程方式点击?

标签: c#wpfunit-testing

解决方案


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

推荐阅读