【发布时间】:2013-09-26 00:44:56
【问题描述】:
我有一个 WPF 项目,它被编译成一个 dll 并且将从另一个应用程序中调用。这就是它的设置方式。 在这个 WPF 项目中,我需要从主窗口的视图模型中弹出一个自定义消息框来向用户显示消息。此自定义消息框需要 Window 参数。这就是来龙去脉。
对于 WPF 应用程序,Application.Current.MainWindow 可以满足我的需求。但这里是一个 dll,所以 Application.Current 为空,并导致运行时异常。
我还尝试了Window.GetWindow(this) 之类的东西。
在这里它不起作用,因为“this”是视图模型,所以它不会给我主窗口的句柄。
我还能在这里尝试获取主窗口的句柄吗?
谢谢。
【问题讨论】:
-
为什么需要主窗口弹出其他消息框?
-
你可以通过
Reflection获取它并通过Activator.CreateInstance()实例化它 -
你能多说一点关于如何使用反射来做到这一点吗?
-
如何创建视图模型?必须有人创建主窗口和视图模型并将它们放在一起。这是您可以做某事的地方。但另一方面,您不希望视图在视图模型中被过多了解......Cinch MVVM 框架有一个很好的方式以一种相当弱的方式连接它们......
-
@user2417994 我发布了一个使用反射的小例子的答案,但我必须说我仍然不完全理解您的需求。如果您只想在您的其他应用程序中显示位于 WPF 程序集中的自定义消息框,这可以通过反射实现,而无需访问 WPF 应用程序的主窗口。如果您需要其他内容,请详细说明...我会相应地更新我的答案:)
标签: wpf