问题标签 [prism-5]

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 回答
514 浏览

dependency-injection - 为什么 ComposeExportedValue 不将我的对象插入到容器中?

我有以下代码行似乎什么都不做,没有错误,什么都不做。该对象不在容器的目录中:

if检查是因为我可能有多个登录模块,并且只有 指定的一个必须Protocol使其视图在容器中可用。然后其他动态加载的模块可以只要求当前注册的登录视图。检查通过并ComposeExportedValue执行,但对象在容器中不可见。

0 投票
1 回答
161 浏览

.net - 如何使用下载的 nuget 包

我已经下载了一个 Nuget 包(Prism 5.0)并将其添加到当前项目中。

现在我创建了一个新的解决方案,我想添加对以前下载的 Prism 包的引用。但它没有显示在下载的包中的任何地方。出现的唯一选项是再次下载它。

如何只保留下载的 nuget 包的一份副本,并在以后重用它们?

0 投票
1 回答
509 浏览

wpf - 在带有 WPF 的 Prism5 中使用 CompositeCommand 始终禁用按钮

嗨,我为视图导航编写了代码,为此我在该按钮的导航区域上添加了按钮单击我想在内容区域中打开视图我的代码是

模块代码

引导是

我的导航视图有 1 个按钮,如下所示

现在的问题是当我运行我的应用程序按钮时总是显示禁用,任何人都可以告诉我是什么问题以及它的解决方案是什么。

谢谢

0 投票
1 回答
610 浏览

c# - 如何在 Prism 中使用 MEF 检索/导入对象

我需要RuleFile在整个应用程序中拥有一个对象 (),表示要序列化的文件,例如与我的应用程序关联的 word (*.docs) 文件。

我使用 Prism 5 和 MEF 作为依赖注入容器。

现在我已经用它装饰了这个对象[Export]并尝试将它导入其中一个,MyViewModel但它正在给出null

请指导我我错过了什么?或者告诉我任何其他方式来最好地处理这种情况。

0 投票
1 回答
601 浏览

c# - Tabitem 标题未使用 Prism 和 WPF 显示其标签

我正在研究 WPF 和 prism5 并且还使用 RadTabControl,我能够动态创建选项卡,现在问题是我无法设置选项卡标题,我正在使用 eventAggregator,值在 shellViewModel 之前很好,但它无法设置选项卡标题

我的选项卡控件在 shellview.xaml 中,它的代码是

这是我的标签项代码

选项卡的视图创建良好,但无法设置选项卡标题值,请让我知道是什么问题。

谢谢

0 投票
1 回答
1341 浏览

c# - 如何交换/替换 MEF 容器中的共享(单例)对象?

这可能很简单,但由于我是 MEF 竞技场的新手,所以我很难找出解决问题的方法。

我正在开发一个使用 WPF + Prism 和 MEF 作为 DI 容器的应用程序。我想将我的对象(即RuleFile)与每个应用程序实例关联起来,方法是将它与文件说 RuleFile1.ruleapp 相关联。因此,我用属性[PartCreationPolicy(CreationPolicy.Shared)]对其进行了修饰,将其视为单例,以便在整个应用程序中与每个应用程序实例保持相同。

接下来,在[ImportingContructor]如下所示的 ViewModel 时,对象与想要的一样。

直到现在一切都很顺利。

使用下面的一段代码,我试图获取与上面提到的视图模型相同的导出对象,但container.GetExportedValue<IRuleFile>()提供了一个不同的新对象引用:

问题 1:为什么我得到一个不同的引用,尽管对象应该与它是一个单例对象相同CreationPolicy.Shared

问题 2:最终这一切的努力是RuleFile用 MEF DI 容器中的反序列化对象交换/替换导出的对象?

0 投票
1 回答
957 浏览

c# - 为什么在 MEF 中使用 Import 和 GetExportedValue 对共享对象进行不同的对象引用?

我有一个如下所示的对象。

使用[ImportConstructor]or [Import],返回相同的对象引用。

但是通过使用编程方法返回的对象是不同的,虽然它应该是单例的,为什么?

添加

我的解决方案中有两个视图模型,下面我只显示一个,但[ImportConstructor]对象保持不变,但使用时GetExportedValue我得到一个新实例并且构造函数再次调用。

我的实际意图是在反序列化后将对象替换回 MEF 容器中,以使对象保持不变。

0 投票
1 回答
147 浏览

mvvm - Prism Windows 8.1 NotifyProperyChanged 不触发?

项目:一个带有“便利贴”信息的小布告栏。VB.Net,VS2013,Windows 8.1 桌面。棱镜/MVVM。

问题:当属性更改时,NotifyPropertyChanged 事件似乎根本不会触发。并且消息不会出现在布告栏上。

问题:为什么会这样?或者:下面的代码有什么问题?

代码

首先,我们有视图。它是这样定义的:

此外,笔记使用“便利贴”模板呈现,定义为:

最后是带有 ItemsSource 和模板属性的 GridView:

到目前为止,对于视图中的演示文稿的 XAML。代码隐藏只不过是一个带有初始化的简单构造函数,它看起来像:

这一切都非常简单,幸好使用 Prism 库来获得更丰富的功能。下一部分是 ViewModel,而且 Viewmodel 也很简单,书外。看起来像:

这些消息是通过作为存储库一部分的 WebAPI 检索的,我确信它工作正常。项目被正确读取并传递给 ViewModel。

当我单步执行代码时,我看到消息到达和 Set,因此调用了 SetProperty。

但是 Messages 没有显示在 View 上。在我看来,当检索到消息时,视图没有收到更改通知。

这种方法有什么问题?

0 投票
2 回答
1494 浏览

c# - 棱镜 5 DelegateCommandBase.RaiseCanExecuteChanged 抛出 InvalidOperationException

我刚刚从 Prism 4.1 更新到 5,过去可以正常工作的代码现在抛出 InvalidOperationExceptions。我怀疑根本原因是更新的异步 DelegateCommands 没有正确编组到 UI 线程。

我需要能够从任何线程调用 command.RaiseCanExecuteChanged() 并在 UI 线程上引发 CanExecuteChanged 事件。Prism 文档说这就是 RaiseCanExecuteChanged() 方法应该做的。但是,随着 Prism 5 的更新,这不再有效。CanExecuteChanged 事件在非 UI 线程上调用,并且在此非 UI 线程上访问 UI 元素时,我得到下游 InvalidOperationExceptions。

这是提供解决方案提示的 Prism 文档:

DelegateCommand 包括对异步处理程序的支持,并已移至 Prism.Mvvm 可移植类库。DelegateCommand 和 CompositeCommand 都使用 Wea​​kEventHandlerManager 来引发 CanExecuteChanged 事件。WeakEventHandlerManager 必须首先在 UI 线程上构造,以正确获取对 UI 线程的 SynchronizationContext 的引用。

但是,WeakEventHandlerManager 是静态的,所以我无法构造它......

根据 Prism 文档,有谁知道我如何在 UI 线程上构建 WeakEventHandlerManager ?

这是重现问题的失败单元测试:

这是异常堆栈:

测试方法 Calypso.Pharos.Commands.Test.PatientSessionCommandsTests.Fails 抛出异常:System.InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它。在 System.Windows.Threading.Dispatcher.VerifyAccess() 在 System.Windows.DependencyObject.GetValue(DependencyProperty dp) 在 System.Windows.Controls.Primitives.ButtonBase.get_Command() 在 System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute () 在 System.Windows.Controls.Primitives.ButtonBase.OnCanExecuteChanged(Object sender, EventArgs e) 在 System.Windows.Input.CanExecuteChangedEventManager.HandlerSink.OnCanExecuteChanged(Object sender, EventArgs e) 在 Microsoft.Practices.Prism.Commands.WeakEventHandlerManager .CallHandler(Object sender, EventHandler eventHandler) 在 Microsoft.Practices.Prism。

0 投票
1 回答
3210 浏览

c# - Unit Test Prism 5 async Delegatecommand 并行执行

我正在为具有 DelegateCommand 的 ViewModel 编写单元测试。此命令使用异步方法执行,自 Prism 5 起支持,如下所示:

现在我进行了单元测试,我注意到,

在命令运行时立即返回(因此失败)。

我认为这是一个错误的原因是在同一个单元测试中一切都很好,如果我写

我错过了什么还是这是一个错误?