ElementHost blocks mouse events

守給你的承諾、 提交于 2019-12-06 05:54:39

I've found success using the method the creator Viasfora used. You can see the code on the GitHub repo here. In particular, look at the TextObfuscationDialog and how it is hosted. I believe there might be something wrong with the VS extension documentation, because I ran into the same problem you did.

EDIT:

I've created a sample project to show this method does work (I'm using it in 2 of my own extensions right now). Hopefully this working code might make it easier for you to implement it in your own project.

You can download the source code from my OneDrive here.

The UIElementDialogPage on MSDN says:

Provides seamless hosting of Windows Presentation Foundation (WPF) content inside a native dialog running an IsDialogMessage-style message loop. This class enables tabbing into and out of the WPF child window handle (HWND), and enables keyboard navigation within the WPF child HWND.

So while an ElementHost will not function correctly within the message loop of a normal/WinForms DialogPage, the UIElementDialogPage will. There are a number of classes that have UIElement* or similar prefix - they are to help migrate the legacy code of VS from Windows Forms to WPF.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!