【发布时间】:2015-10-12 19:03:34
【问题描述】:
我有一个启用 Prism 4.0 的 WPF 应用程序,它广泛使用 RequestNavigate,并且运行良好。我有一个场景,我想将我的部分 UI 渲染为图像并将其存储以供以后从 Windows 服务使用。我已经知道如何使用 RenderTargetBitmap 来生成图像,但是每当我的代码尝试调用 RequestNavigate 时,什么都没有发生。我正在调用引导程序,所以我希望所有类型都已加载,但它只是无法正常工作。谁能告诉我这是否可能? RequestNavigate 是否有任何固有的东西阻止它在没有 UI 时工作?
各个步骤: 首先,我在 MefBootstrapper 上调用 Run。这会将所有程序集加载到 AggregateCatalog 中。
然后,我使用 MEF CompositionContainer.GetExportedValue 创建一个 WPF UserControl,该用户控件具有一个分配了 RegionManager.RegionName 的 ContentControl。这总是可以很好地创建初始 UserControl。
最后,我调用 MefRegionManager.RequestNavigate 并使用我的 UserControl 上的区域名称以及我希望它加载的另一个 UserControl 的路径。这无法加载我尝试导航到的 UserControl。
如果这些是我遵循的唯一步骤,那么无论我是从 Windows 服务运行还是从我的 WPF 应用程序中运行,最终的 UserControl 都无法加载。但是,如果我在调用 RequestNavigate 之前调用 SetRegionManager 从主机 UserControl 中显式添加区域,那么只要代码从 WPF 应用程序中运行,最后一个 UserControl 就会正确加载。如果从我的 Windows 服务运行相同的代码,那么它仍然无法加载。
【问题讨论】:
-
您的问题不够详细。你是什么意思你打电话给引导程序?您在 WPF 应用程序中,但没有 UI?当您调用 RequestNavigate 时,您从哪个对象(Region、ReginManager 等)中调用它?您在 RequestNavigate 方法调用中导航到什么?请提供更多细节和代码 sn-ps 以帮助更清楚地绘制图片。您是否正在尝试导航到动态图像?