首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM Light - ViewModelLocator,设置属性

MVVM Light - ViewModelLocator,设置属性
EN

Stack Overflow用户
提问于 2015-09-18 22:09:30
回答 1查看 300关注 0票数 1

你好,我需要关于mvvm light的帮助。

我想在我的构造函数中设置属性。但它只会召唤一次。我有一个viewModel和一个视野。我通过ViewModelLocator从另一个viewModel调用viewModel。第一次,当我调用viewModel时,一切正常,但是当我在其他时间调用viewModel时,它就不能工作了,因为它是由viewModel创建的,它的构造函数已经被调用了。我如何重置(或其他什么) viewModelLocator,这样每次我调用viewModelLocator时,他都会调用构造函数。

在下面的代码中,我调用了另一个viewModel:

代码语言:javascript
复制
var viewModel= (new ViewModelLocator()).TestVM;
viewModel.Item = _item;
Messenger.Default.Send(new NotificationMessage("testView"));
EN

回答 1

Stack Overflow用户

发布于 2016-08-27 02:27:32

MVVMLight的ViewModelLocator不是被设计成在代码中直接实例化的。在它的构造器中,你应该注册所有你知道的依赖项。然后,您的ViewModels会将所有依赖项作为构造函数参数,如下所示:

代码语言:javascript
复制
public MainViewModel(IMessenger messenger, IDialogService dialogService)
{
    // Use messenger and dialogService
    // ...
}

当您使用定位器实例在视图中将ViewModel设置为DataContext时,ViewModelLocator会尝试解析所有必需的依赖项。

请注意,SimpleIoc容器的默认行为是缓存所有创建的对象,因此您的构造函数不会被调用两次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32654119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档