我有一个WPF项目,它被编译成一个dll,将从另一个应用程序调用 . 这就是它的设置方式 . 在这个WPF项目中,我需要从主窗口的视图模型中弹出一个自定义消息框,以向用户显示消息 . 此自定义消息框需要Window参数 . 这就是来龙去脉 .
对于WPF应用程序, Application.Current.MainWindow
将获得我需要的东西 . 但是这里它是一个DLL,因此Application.Current为null,并导致运行时异常 . 我也试过像 Window.GetWindow(this)
这样的东西 . 这里它不起作用,因为'this'是视图模型,所以它不会给我主窗口的句柄 .
我还可以尝试获取主窗口的句柄吗?
谢谢 .
1 回答
一旦你获得应用程序DLL,并假设你知道窗口的名称,你可以通过反射获得并实现它
请注意,这将创建窗口的新实例,而不是让您处理已在运行的窗口 . 要获得已经实例化的窗口句柄,您可以使用WIN32 API .
以下是一些可以帮助您完成此操作的链接:
Get Window instance from Window Handle
Get Application's Window Handles
http://social.msdn.microsoft.com/Forums/vstudio/en-US/1d7bd916-9bbe-4c76-b9a0-8306159035a1/faq-item-how-to-retrieve-a-window-handle-in-visual-cnet
希望这可以帮助