问题标签 [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 投票
1 回答
92 浏览

c# - 数据绑定 ViewModel 到静态加载程序集中的 View

我正在编写一个库,我们的主要 WPF GUI 项目在运行时使用反射静态加载。我的类库尝试加载 ViewModel 以在 WPF GUI 中显示其关联视图。这似乎不起作用。这是因为 WPF 无法访问我在库中声明的绑定吗?我在库中有一个名为 CommonResources.resx 的文件,如下所示:

当主 GUI 尝试显示 MyViewModel 时,如何让 WPF 魔法发生?

0 投票
1 回答
4874 浏览

c# - Prism 6.1 ViewModelLocator doesn't instantiate my ViewModel

I just set up a new project recently, using Prism 6.1(with Unity).

I've my bootstrapper:

The MainShell:

My Module definition:

My StatusView:

The corresponding ViewModel:

The issue is that my constructor is never called, my DataContext is not set.

How can I debug this? What could I've done wrong?

0 投票
1 回答
649 浏览

c# - PRISM (Unity) 中的 ViewModelLocator 在模块中不起作用

我正在关注Brian Lagunas 的教程并有一个问题。

我们有一个使用 PRISM 6 和 Unity 引导程序的小型应用程序设置。我想使用ViewModelLocator将 a 绑定ViewModel到我的视图。这适用于“基本模块”(带有 Shell 和引导程序的模块),但在其他模块中使用它时似乎存在一些问题。

您可以在下面找到View(XAML 和代码隐藏)和ViewModel. 如果我DataContext在后面的代码中手动设置绑定,则绑定有效。在调试代码时,我发现ViewModel该类从未实例化,所以我猜VML由于配置错误而无法找到 VM。但据我所知,命名约定已得到满足。

你能找到问题或知道我忘记了什么配置吗?

查看(后面的代码):

查看 XAML:

视图模型:

0 投票
1 回答
483 浏览

c# - Caliburn.Micro 自定义 ViewModelLocator:在 ItemContainerStyle 中绑定 usercontrol 属性

我正在使用 Xceed 工具包 WindowContainer 和 ChildWindows 生成一个由多个窗口(容器)组成的动态客户区,每个窗口都包含多个自定义用户控件(元素)。这些窗口可以在 WindowContainer 区域中自由移动、调整大小和最大化。

为了在 ViewModel 级别表示层次结构,我使用 Caliburn.Micros 导体机制。所以 MainViewModel 进行容器:

和容器进行元素:

对应的视图看起来像这样(自定义项控件,用 ChildWindow 作为容器替换默认的 ContentPresenter)。MainView.xaml(为简洁起见,省略了 ElementContainerView.xaml):

引起我头痛的行如下,取自 MainView itemscontrol:

绑定工作正常,但相应的视图未正确附加。所以我只是添加了一个老式的数据模板来将容器 ViewModel 绑定到其对应的视图:

问题:由于 ViewModel 定位器过程不再由 Caliburn.Micro 完成,关闭应用程序会导致每个 ChildWindow 出现空引用异常,这是由 Caliburn.Micro 关闭执行的 ViewModel 引起的,但没有关闭 ElementContainerView。

我如何告诉 Caliburn.Micro 像在数据模板中那样解决该约定。视图和视图模型当然是正确组织的,因此可以使用默认约定(RootNS.ViewModels.ElementContainerViewModel.cs / RootNS.Views.ElementContainerView.xaml)。我摆弄着使用 ViewLocator.NameTransformer 和 ConventionManager 但无法让它工作。

非常感谢,莉

0 投票
1 回答
608 浏览

c# - 不同类库/项目中的 C# WPF Prism ViewModelLocator

除了 WPF 项目之外,Prism ViewModelLocator 有没有办法自动装配来自不同类库的视图和视图模型?

目前,我的 WPF MainWindow.xaml 位于 WPF 项目的 Views 文件夹中,并自动连接到 ViewModels 文件夹中的 MainWindowViewModel 链接。数据上下文已连接并且工作正常。

我的 MainWindow 视图使用了类库中的其他视图(用户控件),而 Prism ViewModelLocactor 似乎没有自动连接视图和视图模型。有没有办法让它工作?如果我手动注入视图模型,数据上下文是链接,但是一旦我注释代码并期望 Prism 处理它,数据上下文就不会连接。

0 投票
1 回答
339 浏览

mvvm - 视图模型实例化了不止一次。(棱镜)

我有一个带有工具栏的主视图和一个 TabControl 区域,该区域注册了两个视图:视图 A、视图 B。所有视图都应具有与 DataContext 相同的 ContactsViewModel 实例,但实际上,每个视图都在创建一个新的 ContactsViewModel 实例。

这是主视图代码隐藏:

这是视图 A 代码隐藏:

视图 B 类似于视图 A。

这是 ViewModel:

如何让 ContactsListView(这里称为 View A)拥有与 MainView 相同的 ContactsViewModel 实例?

已编辑

主视图和视图 A 中的代码已编辑,因此在主视图中我将 ViewModel 注册到容器中,并在 View AI 中解析视图模型。仍然得到三个实例。解析视图模型后,将创建一个新实例。

0 投票
0 回答
81 浏览

prism - ConfigureViewModelLocator 绑定不同程序集中的视图

好吧,所以我对这种事情不太好。我目前有以下用于在引导程序中配置我的视图模型定位器。

据我了解,这会搜索视图所在的程序集,并将任何以视图结尾的视图的数据上下文绑定到匹配的命名视图模型。(对不起,我也很难解释这些事情)

但是,我们希望进一步分离模块。如果视图模型位于不同的项目中,任何人都可以向我解释我们可以将视图模型链接到视图的方法吗?

IE 如果我有这两个项目

我想将一个项目的视图模型绑定到另一个项目的视图。这是可行的吗?如果是,人们将如何做到这一点?任何帮助,将不胜感激。

0 投票
1 回答
479 浏览

c# - UWP:如何正确清理 ViewModel?

我开发了一个使用MvvmLight的 UWP 应用程序,但存在一些内存泄漏。我的应用程序包含 2 个主要页面:

  • 主页,包含表单列表
  • 详细信息页面,包含所选表单的所有详细信息(数据、照片等)

每次打开详细信息页面时,我都可以看到内存使用了 25 多个 Mo:所以在加载了十几个页面后,应用程序变得更慢......

我的 ViewModels 继承自ViewModelBase,所以我可以使用Cleanup()

所以我尝试在DetailsViewModel中使用它,如下所示:

在用户保存表单之后,在他返回HomeViewModel之前,我直接在DetailsViewModel上调用它:

当用户通过App.xaml.cs中的AppBackButtonPressed()通过Back button 返回主页时,我也会调用它:

这工作没有错误,但它似乎不是实现它的好方法......

在某些示例中,Cleanup()在页面的Closing 事件中引发,而 UWP 中不存在该事件。

那么有没有更清洁的方法可以用 UWP 做到这一点?

0 投票
1 回答
80 浏览

mvvm - MVVM View 与 ViewModel 绑定问题

实例化视图模型时遇到问题。

我大部分时间都在使用 ViewModelLocator,因为在大多数情况下我必须注入依赖项。但是,在某些情况下,我需要将参数传递给 ViewModel。据我了解,我需要为此使用 ViweModel-First 方法。这意味着我需要为 ViewModel 创建一个在运行时绑定到 View 的 DataTemplate。确保包含一个带有我要传入的参数的构造函数。

我遇到的问题是,当我创建 ViewModel 并传入我的参数时,会调用正确的构造函数。但是,由于 ViewModel 绑定到视图,因此视图调用了视图模型的默认无参数构造函数。

这是我将 ViewModel 绑定到的 UserControl 的 XAML 的样子:

数据模板如下所示:

这是一个示例 ViewModel:

一旦我使用正确的构造函数通过代码创建了我的视图模型来传递参数,视图模型就会再次由视图使用视图模型的默认无参数构造函数创建。

谁能解释为什么会发生这种情况,并阐明如何设置视图模型优先方法以使其正常工作?我很茫然,我整天都在努力。

谢谢,蒂姆

0 投票
1 回答
370 浏览

c# - MVVM light ViewModelLocator是否可以根据视图动态生成视图模型

MVVM light ViewModelLocator 是否可以识别正在加载的视图然后动态生成视图模型?

我的项目结构如下