MVVM Light - ViewModelLocator,设置属性



你好,我需要mvvm灯的帮助。

我想在构造函数中设置属性。但它的召唤只有一次。我有一个viewModel和一个视图。我通过ViewModelLocator从另一个viewModel调用viewModel。在第一次,当我调用viewModel所有工作正常,但当我调用viewModel在其他时间它不工作,因为它是创建的viewModel和它的构造函数已经调用。我怎么能重置(或任何)的viewModelLocator,所以他调用构造函数每次当我调用viewModelLocator。

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

var viewModel= (new ViewModelLocator()).TestVM;
viewModel.Item = _item;
Messenger.Default.Send(new NotificationMessage("testView"));

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

public MainViewModel(IMessenger messenger, IDialogService dialogService)
{
    // Use messenger and dialogService
    // ...
}

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

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

相关内容

  • 没有找到相关文章

最新更新