如何从ViewModel(在mvvm中)打开模式对话框(视图)

时间:2019-03-23 13:47:18

标签: c# mvvm-light

我有一个在列表视图中保存对象的应用程序。我想允许用户在列表视图中双击某个项目时使用模式对话框更改那些对象。

我正在使用mvvm light工具箱。当我双击列表视图中的一个项目时,我知道选择了哪个对象以及为其选择了哪种模型类型。我正在通过ServiceLocator检索相应的ViewModel,并且正在使用Execute“启动” viewmodels的中继命令,将模型作为对象传递,并带有所需的数据信息。但是,现在,在ViewModel中,我正在努力如何打开与ViewModel绑定的模型对话框的相应视图?

编辑(添加一些代码片段)

public class ViewModelLocator
{
    public ViewModelLocator
    {
        SimpleIoc.Default.Register<OptionSpecificViewModel>();
    }

    public OptionSpecificViewModel OptionSpecificView
    {
        get
        {                
            return ServiceLocator.Current.GetInstance<OptionSpecificViewModel>();
        }
    }
}

视图定位器工作正常

public class MyListViewManager
{
    public void CallMyDialog(Guid xxx)
    {
       var objModel = GetMyModelByGuid(xxx);
       var vm = CommonServiceLocator.ServiceLocator.Current.GetInstance<ObjectSpecificViewModel>();
       vm.EditCommand.Execute(objModel);
    }
}

“ ListViewManager”也可以工作

我的问题是,我处于具有正确模型(数据)的正确ViewModel中。

public class OptionSpecificViewModel : ViewModelBase
{
    public OptionSpecificViewModel()
    {
        InitRelayCommands();
        RegisterMessages();
    }
    ...

    public void OnEditCommand(object model)
    {
        // I reach here in the correct view model with the correct model
        // but how can I open the view here??
    }
}

据我了解MVVM,视图模型确实知道该模型,并且视图通过绑定与ViewModel建立了“连接”。 但是ViewModel不知道视图。那么如何开始查看呢?

0 个答案:

没有答案