问题标签 [prism-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

.net - PRISM 区域在导航期间丢失上下文

我使用 PRISM 及其导航功能创建了一个应用程序。此应用程序中有一个主要区域,其中Context包含当前登录的用户。在这个区域我使用动态加载视图RegionManager.RequestNavigate。视图包含具有单独视图模型的其他视图。一切都很好,只是主视图在整个应用程序时间都存在,当我从视图中出去并返回视图时,它与以前一样,即不再创建它。我所做的:在我实现的主视图模型中INavigationAwareIsNavigationTarget设置为 false。每次都会创建视图,但是“可能创建嵌套区域,因为它已经注册”的异常。然后在主视图模型中,我IRegionMemberLifetime将其设置KeepAlive为 false。它'Context失去它的内容。

我该如何解决?

谢谢

更新:

我准备了工作示例PrismNavigationSample.zip以充分理解我的问题。

在两个项目中尝试这个:转到第一个视图,更改滑块值,返回并再次转到第一个视图。另请参阅上面窗口中的上下文值。

0 投票
2 回答
973 浏览

mef - 使用 MEF 从 Prism 4 中的 CompositionContainer 获取新的 Shell 实例

我在 Prism 中遇到了一些奇怪的 MEF 行为,我无法真正解释。我找到了一种我不太满意的解决方法,所以我真的很想了解是什么原因造成的。

PartCreationPolicy我已经用of声明了我的 shell 窗口类NonShared。我正在尝试使用CompositionContainer.GetExportedValue<>()我的函数MefBootstrapper来创建一个新的 Shell 实例。

奇怪的是,如果我在创建 shell 之前调用,每次调用它都会Container.GetExportedValue<>()得到一个 type 的新对象。Shell但是,一旦 shell 被初始化,重复调用以Container.GetExportedValue<>()返回相同的 Shell 实例。

就好像外壳初始化以某种方式将我的外壳导出重新注册为共享。

但是,我在引导程序代码中没有看到任何明确尝试实现此目的的调用。

谁能解释一下:

  1. 什么动作有这个副作用
  2. 如何(如果可能)恢复NonShared行为,以便我可以使用 MEF/ServiceLocator 创建多个 shell。

干杯,

标记

0 投票
1 回答
6215 浏览

c#-4.0 - 在 Prism 中激活区域中的视图

我有我似乎无法解决的问题。我创建了一个测试项目,使用 MEF 和 Prism4。我创建了一个测试项目,其中有 2 个视图,每个视图都在一个区域内注册,并且在另一个区域中还有一个按钮。单击按钮时,我希望将视图更改为正确的视图。我认为错误的代码如下,有人知道我在这里做错了什么吗?

我收到以下错误...

0 投票
2 回答
1512 浏览

c# - 复合视图 - 视图已存在于区域错误中

我正在开发 WPF/Prism 4/AvalonDoc 应用程序。

我的一个观点非常复杂,ViewModel 变得庞大而难以管理。所以我决定用他们自己的 ViewModel 把它拆分成更小的视图。

我已经在视图上放置了一个区域,并使用“主”ViewModel 构造函数中的 regionManager.RegisterViewWithRegion 方法将子视图加载到该区域中。

当仅加载视图的一个实例时,这将按预期工作。但是当我打开该屏幕的第二个实例(它作为 DocumentContent 加载到 AvalonDock 的 DocumentPane 中)时,我收到“区域中已存在视图”错误。

如果可能,我想避免给该地区一些独特的名称。有没有办法表明我正在向“主”视图的特定实例添加子视图?关于如何做到这一点的任何建议?

0 投票
3 回答
8385 浏览

wpf - WPF Prism - 使用 Prism 区域有什么意义?

我只是想知道区域的意义是什么。我想我不明白他们解决的问题

例如,我看到很多人使用区域作为导航区域,但是为什么不将 ItemsControl 绑定到 ObservableCollection 而不是拥有一个区域并将不同的导航元素加载到该区域中呢?


它在替代品上的使用/好处的真实示例将会震撼!

0 投票
1 回答
1660 浏览

wpf - 使用 WPF PRISM 4 优雅地关闭应用程序

我正在寻找一个“最佳实践”(如果有最好的)来干净地关闭使用 MEF 和 PRISM4 的 WPF 应用程序。最终,我正在寻找某种“关闭服务”来管理从 Shell 到想要验证关闭应用程序是否可以的任何视图模型(或其他订阅者)的所有事件/命令。事件聚合器是最干净的方式吗?其他意见/选择?

理想情况下,我的 ToolbarRegion 中的 ToolbarView 上有一个按钮(我的 Shell 中的 2 个区域中的 1 个)。此按钮将调用我的 ToolbarViewModel 上的命令(引用我的 ToolbarControler 上的命令),这反过来会做两件事(我认为?)...首先,通知所有订阅者它的关闭时间并允许他们中的任何一个取消关闭并且...其次,如果没有取消,则以某种方式通知外壳程序关闭。我的应用程序的关闭模式设置为“ShutdownMode.OnMainWindowClose”,因此如果 Shell 关闭,我应该已准备就绪。

有人可以帮我解决这个问题吗?

0 投票
2 回答
652 浏览

.net - 是否可以编写 Prism 应用程序以便在没有 UI 的情况下对其进行测试?

免责声明:棱镜新手。我正在疯狂地阅读以弥补失去的时间:)

上下文:我需要为使用 Prism 构建的 WPF 应用程序编写自动化验收测试。

问题:我发现在没有 UI 的情况下尝试组合支持 ViewModel 和他们需要的一切是很复杂的。

我在这里可能错了... Prism 允许您使用命名占位符(区域)标记外壳。不同的模块(隔离单元)使用相应的 RegionNames 注册它们的视图。视图还依赖于通过 MEF/Unity 注入的 ViewModel(ctor 注入)。

  1. 显示视图
  2. 触发子视图的创建(regionName => View registry)
  3. 触发子视图模型的创建(Mef ctor 注入)。

因此,编写应用程序被委托给 Prism(或更重要的是 View)。这似乎是一种视图优先的方法。这会在没有 UI 的情况下启动应用程序。使用 UI 进行测试很痛苦。

我正在寻找的是一种演示者优先的方法,它在没有 UI 的情况下组成整个对象(ViewModel 和依赖项)图。

Prism4 是否可以通过不同的方式编写应用程序或不支持?

[更新:2011 年 12 月]
http://compositewpf.codeplex.com/discussions/283065
发布在 prism 论坛上以获得更多信息;似乎这是不可能的。建议使用 UI 测试进行验收测试。Prism 组成 UI;因此对观点有至关重要的依赖性。

0 投票
2 回答
2139 浏览

c# - 我怎么知道我的所有模块是否都加载到 prism 4 中?

我有一个使用 PRISM 的 WPF 桌面应用程序,有 12 个相互不依赖的模块,每次我启动 shell 时,都会加载模块,关键是我想知道最后加载了哪个模块所以我可以开始一个动作。我怎么能确定这个?

0 投票
2 回答
165 浏览

c#-4.0 - 如何在按钮单击命令上更新图像

View 有一个按钮和 Image 控件。我已将按钮命令绑定到 ViewModel 上的 delegateCommand,它会打开一个文件对话框供用户选择 Image。View 的上下文“对象”包含一个属性“Icon”,它是键入字节[]。我已将图标绑定到图像控件。问题是如何在图像控件上显示选定的图像文件?

xml:

0 投票
2 回答
351 浏览

windows-phone-7 - 如何在 windows phone 中使用 InteractionRequestTrigger?

如何在 windows phone中使用 * InteractionRequestTrigger *?

我在程序集Microsoft.Practices.Prism.Interactivity或程序集Microsoft.Practices.Prism中找不到此类。请帮我找到示例代码。