c# - 如何以编程方式单击 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
编程方式点击?
解决方案
TextBlock.RaiseEvent(new RoutedEventArgs(TextBlock.MouseDown));
推荐阅读
- java - 将 Qlik hub 中的报表集成到 Web 应用程序中
- python - float() 参数必须是字符串或数字,而不是 'NAType'
- c# - 使用 VS Code 调试器,如何停止此错误?
- java - 如何将字符串值屏蔽为一系列 _ _ _ _ _
- javascript - 试图从我的公会中获得最不活跃的成员
- javascript - Webpacker 在 manifest.json 中找不到 entry.js
- node.js - Laravel 套接字网络::ERR_CONNECTION_TIMED_OUT
- angular - 用 Angular 8 中的对象填充数组
- visual-studio-code - Mac 上的 VScode - 启动 safari 调试
- c# - 为什么 UI 元素角等于 Canvas 角?