承载Windows窗体主机的自定义WPF控件的自动化

时间:2015-07-07 09:31:46

标签: c# wpf winforms-interop microsoft-ui-automation

我有一个基于ContentControl的自定义WPF控件。控件显示电网,并自己绘图。我希望通过自动化框架提供电网元素。 棘手的部分是控制本身有多种方式来绘制电网。它可以使用WPF绘制它,或者它可以使用DirectX绘制它。当它使用DirectX(首选模式)时,控制主机 WindowsFormsHost和其HWND上的randers。

现在我在自定义控件上实现了Automation Peer,并且在Inspect中很好地显示了元素(非常酷)。 但是在尝试通过自动化框架模拟点击时会出现问题。 AutomationElement.FromPoint始终返回windowsformshost自动化元素,而不是我的自定义自动化元素。

当我查看Automation Tree时,它看起来像这样:

Window
   pane   <- Windows forms host
      pane
   Titlebar
   Custom Control <- My Custom control that displays power grid
       Power grid elements

我认为问题是窗格出现在我的自定义控件之前,而自动化框架认为它覆盖了我的元素。 我该如何解决这个问题?我可以告诉Windows Forms Host不要将自己添加到自动化树吗?或者低于我的自定义控件?

0 个答案:

没有答案