问题标签 [viewmodellocator]

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

wpf - 什么是 ViewModelLocator,与 DataTemplates 相比,它的优缺点是什么?

有人可以快速总结一下 ViewModelLocator 是什么,它是如何工作的,以及与 DataTemplates 相比使用它的优点/缺点是什么?

我曾尝试在 Google 上查找信息,但似乎有许多不同的实现方式,并且没有关于它是什么以及使用它的优缺点的严格列表。

0 投票
2 回答
3905 浏览

wpf - 将视图模型连接到其视图的首选方式是什么?

过去在使用 MVVM 时,我创建了每个视图作为DataTemplate它对应的视图模型来处理它们的连接。我刚开始使用 MVVM Light,并注意到他们有ViewModelLocator. 我看过的其他几个工具包包括一些变体,但是这带来了什么好处DataTemplate呢?

连接视图和视图模型的最佳实践是什么?

0 投票
1 回答
908 浏览

silverlight - 带有 IOC 子容器的 ViewModelLocator?

使用 IOC 子容器时如何实现 ViewModelLocator 模式?典型的定位器实现类似于:

其中 Services.ServiceLocator 是只读静态属性。但是,如果您使用子容器,这将失效。这是我使用子容器对 Services.ServiceLocator 的定义:

显然这是不正确的:我注入的依赖项将来自根容器而不是子容器。(子容器是由我当前视图以外的东西创建和引导的。因此我当前的视图可以自动从子容器连接。)

那么如何在多容器场景中获得正确的容器呢?标准答案是构造函数注入它,但 ViewModelLocator 似乎不可能:它需要一个默认构造函数,因此可以从 XAML 构造它。

由于我正在研究 PRISM 复合应用程序(因此没有标记扩展),因此我也在寻求一种适用于 Silverlight 4 和 WPF 4.0 的解决方案。我碰巧使用 Unity 作为 IOC 容器。哦,该解决方案应该在 Blend 中工作(也就是说,它不应该阻止创建绕过 IoC 容器的新设计时视图模型)。

0 投票
1 回答
2478 浏览

c# - 您如何将设计时视图模型放在单独的程序集中?

我将 MVVM Light 和 Prism 与视图模型定位器模式一起使用。我真的很喜欢在 Blend 中使用设计时视图模型,但我不一定希望将它与我的生产代码一起提供。有没有办法将设计时视图模型放在另一个程序集中,然后告诉视图模型定位器在那里找到它?似乎设计时程序集 (*.Design.dll) 可以帮助解决这个问题,但我不知道如何解决。

0 投票
1 回答
2289 浏览

unity-container - 多实例 ViewModel 和 ViewModelLocator

我已经使用 Unity 构建了一个 ViewModelLocator,并且已经成功地将它与单例 ViewModel 实例一起使用。例如:

ViewModelLocator 在 App.xaml 中定义为资源:

这允许我在任何视图中绑定到 ViewModel,如下所示:

我的问题是如何使用同一 ViewModel 的多个实例保持相同的模式(和可混合性)?

我在这篇文章中找到了我想要做的参考 如何拥有多对“View-ViewModel”?但它没有进入实施的细节。

我想要做的是为不同的数据树提供这些 Views/ViewModel 对的多个实例,允许在它们之间复制和粘贴等,但无法考虑如何使用容器来满足 ViewModelLocator 中的特定实例?

我假设我需要按照上面提到的帖子的某种 ViewModel 集合,但是如何在 Unity Container 中注册该集合以及如何在 View 中绑定到该集合?

任何帮助深表感谢。

0 投票
2 回答
2266 浏览

silverlight-4.0 - 在 Silverlight 4 中使用带有子窗口的 MVVM Light View Model Locator

我想在子窗口中使用视图模型定位器。问题是这不起作用:

我收到错误: 找不到具有名称/密钥定位器的资源

0 投票
1 回答
667 浏览

mvvm - 对 Unity 2.0 的“可混合”ViewModelLocator 的建议

我有一套现有的 Silverlight 应用程序,使用 MVVM 模式来分离视图和视图模型。我们使用 Unity 2.0 作为 IoC 容器将依赖项注入 ViewModel 类(和支持类型)。我有一个现有的 ViewModelLocator 类,它使用 Unity Container 来解析 ViewModel。

所有这些在运行时都运行良好;但是,由于 ViewModelLocator 依赖于由 App.xaml.cs 中的 Application_Start 方法“运行”的 Bootstrapper 类创建和配置的 Unity 容器,因此我无法在设计器或 Blend 中打开视图.

我正在寻找如何重新设计 ViewModelLocator 以支持“可混合性”的建议。

请注意,我不愿意仅仅为了可混合性而强制我们的 ViewModel 类实现默认的无参数构造函数。我们还让 ViewModel 检查 IsInDesignMode 属性(来自 MVVM Light ViewModelBase 类)以提供设计时数据而不是进行服务调用,因此我们在设计时和运行时没有不同的 ViewModel 实现。

让我知道你的想法。

0 投票
1 回答
437 浏览

c# - 简单的 MVVM 工具包 - 切换时失去 ViewModel

我正在使用 MVVM 工具包。在我的 ViewModel 中,我保留了在将 ViewModel 切换到另一个时要保存的数据。

负责切换 ViewModel 的是 ViewModelLocator:

http://simplemvvmtoolkit.codeplex.com/wikipage?title=Getting%20开始点 8。

ViewModelLocator 每次都返回新的 ViewModel:

我不想破坏 MVVM 规则。我正在考虑创建这样的新对象:

...或者在切换 ViewModel 序列化 ViewModel 时,在将其加载回来时 - 反序列化...

这个问题的正确解决方案是什么?

0 投票
1 回答
427 浏览

c# - MEF 的 ViewModelLocator

我想知道是否有ViewModelLocatorMEF。如果有的话,能给我链接吗?我计划将它与棱镜一起使用。

0 投票
2 回答
2308 浏览

c# - 棱镜和 MVVM 光工具包

我正在尝试将 Prism(仅用于 CompositeUI)和 MVVM Light Toolkit(用于 MVVM 架构 =D)放在一起工作,但我在使用 Light ViewModelLocator 时遇到了一些问题。当我们将定位器用于“简单”的 WPF 应用程序时,我们可以使用 App.xaml 上的应用程序资源,如下所示:

但是当我们使用 Prism 时,我们的业务代码在 Module 项目中,并且它没有 App.xaml,然后我尝试将该资源放在 View 资源中:

它只是关闭了我的设计模式(以及运行时)错误,但视图没有出现在分配给它的区域中。

有人已经尝试过这样做吗?是否可以将 Prism 和 MVVM Light 一起工作?

这是我的“完整”代码:

(ViewLight.xaml)

ViewLightModel.cs:

Financeiro.cs(模块初始化程序类......部分显示......就在我注册和“调用”视图的地方):

“正常” MVVM Light Application 有一个 App.xaml 文件,(我认为)没有在 Prism 模块视图中使用。该文件具有以下结构:

这就是我执行应用程序时发生的情况。模块上的 View 应该被加载到这个空白区域,显示它的 Button,但什么也没发生:

http://imageshack.us/photo/my-images/818/capturarwy.png

当我尝试更改此视图并在其位置放置一个“简单视图”(不使用 MVVMLight)时,它可以完美运行,如下图所示:

http://imageshack.us/photo/my-images/513/capturar1a.png