问题标签 [prism]

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 投票
3 回答
2054 浏览

wpf - 为什么 ItemsControl 会显示视图而 ContentControl 什么也不显示?

我有一个基于 Prism 的应用程序。

这是我的外壳:

在我的MenuModule中,我向该区域添加了一个视图,它显示正常:

问题是:我不想在我的外壳中使用ItemsControl,我想要一个ContentControl,但是当我使用 ContentControl 时,它什么也没有显示。

为什么 ItemsControl 会显示我的视图而 ContentControl 什么也不显示?

0 投票
3 回答
7367 浏览

c# - 具有两个键和一个对象的最佳 C# 集合是什么?

我有一个MenuManager类,每个模块都可以向其中添加要加载到主要内容中的键和元素:

所以客户模块注册它的视图是这样的:

所以稍后我会说:

为了获得默认视图(注册的第一个视图),我说:

这很好用。

但是,我想用分隔模块名称和视图名称的连字符消除“代码气味”,所以我想用这个命令注册:

但是替换我当前的字典的最佳方法是什么,例如,我想到的是这些:

  • Dictionary<string, string, object> (doesn't exist)
  • Dictionary<KeyValuePair<string,string>, object>
  • Dictionary<CUSTOM_STRUCT, object>

新集合需要能够做到这一点:

  • 获取带有模块和视图键的视图(例如“客户”、“帮助”返回 1 个视图)
  • 通过模块键获取所有视图的集合(例如“客户”返回 5 个视图)
0 投票
3 回答
8514 浏览

wpf - 复合 WPF (Prism) 模块资源数据模板

鉴于我有一个 shell 应用程序和几个使用 Microsoft CompoisteWPF (Prism v2) 的单独模块项目......

收到命令后,模块会创建一个新的 ViewModel 并通过区域管理器将其添加到区域中。

我认为我可以在模块中创建一个资源字典并设置一个数据模板来显示加载的视图模型类型的视图(见下面的 xaml)。但是当视图模型被添加到视图中时,我得到的只是打印出来的视图模型命名空间。

编辑:

我可以通过添加到 App.xaml 来让它工作

这很好,但这意味着随着新模块的创建,需要添加 App.xaml 文件。我正在寻找的是模块的一种方式,因为它们加载以动态添加到 Application.Resources。这可能吗?

0 投票
1 回答
1347 浏览

prism - 在 Composite WPF(Prism)中,多个模块可以/应该共享一个“工具栏”区域吗?

我对复合 WPF 非常陌生,并且正在为 shell 的基本架构而苦苦挣扎。

假设我有一个带有三个区域的外壳 - “OutlookStyleNav”、“Main”和“Toolbar”。

如何将按钮添加到工具栏区域?

每个模块是否应该向该区域添加它自己的按钮?(如果是这样,如何同时显示所有模块的按钮

Shell 是否应该动态检测我的控制器中的命令并基于此创建按钮?

我不知道。有什么建议么?

0 投票
1 回答
3251 浏览

wpf - 在 Composite WPF (Prism) 中,我应该如何对我的控制器进行单元测试?

我正在用一个模块构建一个基本的复合 WPF 外壳。我想对我的模块进行单元测试。显然 Composite WPF 以一种易于单元测试的方式模块化了我的代码。

下面是我想要进行单元测试的代码。它驻留在我的模块的控制器中。请注意标准复合 WPF 实体的使用,例如区域、演示者、模型等。

这只是我想要单元测试的七行代码。还不错。问题在于它依赖于许多外部组件——RegionManager、View、PresentationModel 等。

为了独立测试这一点,我模拟了外部组件。这些通过使用 Unity 容器的构造函数注入传递到我的控制器中。为了配置它并做一个简单的测试,我的单元测试如下所示......

(看看这个方法的长度!肯定有更好的测试方法?复合WPF真的让我的生活更轻松吗?而且我每次测试都必须这样做?!)

有没有更好的方法来测试我的课程?任何意见,将不胜感激。

0 投票
2 回答
1978 浏览

dependency-injection - 如何让 Prism/Unity 自动解析视图(用户控件)?

在复合应用程序(棱镜)中,当我的模块加载时,我收到此错误:

{“当前构建操作(构建键Build Key[CustomersModul.ViewModels.CustomerAllViewModel, null])失败:尝试调用构造函数CustomersModul.ViewModels.CustomerAllViewModel(CustomersModul.Views.CustomerAllView view)时无法解析参数视图。(策略类型 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy,索引 2)"}

我正在解决这个类:

那个类看起来像这样

通常我会解析没有构造函数参数的Presenter并在内部实例化他们的视图。这是我第一次使用接受 View 作为参数的ViewModel 。

有趣的是,当我使用Resharper转到视图时,它会询问我是否要转到 XAML 或后面的代码,所以也许 Prism 很困惑要实例化哪个?

如何让 Prism 在参数中自动实例化此视图(带有 XAML 和代码隐藏的用户控件)?

0 投票
1 回答
275 浏览

unity-container - Does Prism/Unity have a "service preloader"?

I've got a number of modules in a Prism application which load data that takes 3-8 seconds to get from a service.

I would like to be able to say in my bootstrapper something like this:

PSEUDO-CODE:

And this would run in a background thread and when the user actually needs the variable "allCustomers" it would be fully loaded.

Is there an automatic service in Prism/Unity which does this type of preloading?

0 投票
2 回答
901 浏览

wpf - Prism 中的模块应该有多细?

我目前正在使用 Prism(复合应用程序库/指南)进行我的一个项目。该应用程序将是一个专门的类似于 MSPaint 的篮球应用程序(球、球员等的预定义对象)。

现在我想知道如何将我的应用程序组织到 Prism 模块中。尤其是在考虑软件的绘图部分时。

我应该将一般绘图视图(2 列:工具箱、画布)拆分为 2 个模块(工具箱和画布)还是这些模块的持续通信所产生的开销太大?

Prism 模块应该有多细?

在此先感谢和最好的问候,crischu

0 投票
2 回答
1009 浏览

wpf - 在一个项目中使用 MEF 和 Prism (CAL) 是否可能(并且合理)?

我目前正在使用 Prism (CAL) 进行 WPF 项目,我想知道在一个项目中同时使用 Prism 和 MEF 是否是个好主意。

我会使用 Prism 来实现模块化,使用 MEF 来实现可扩展性。我的项目是一个类似绘画的应用程序,因此 Prism 将提供模块分离(工具箱、画布作为模块等),MEF 将用于为要绘制的新形状(即矩形、圆形......)提供可扩展点。

这有意义吗,或者我可以仅使用 Prism 获得类似的功能吗?

在此先感谢和最好的问候,crischu

0 投票
1 回答
927 浏览

silverlight - 我可以在 Silverlight 中使用 Ninject 进行 Prism 事件聚合吗?

我正在考虑使用 Prism 在 Silverlight 3 中做一个项目,我真的很喜欢这里显示的事件聚合http://development-guides.silverbaylabs.org/Video/Prism-Eventing

所有资源似乎都指向使用 Unity 和 Prism 而不是 Ninject。在 Ninject 中是否有类似的聚合事件方式?或者如果我想使用 Prism,我是否仅限于 Unity?