从父视图模型wpf-mvvm关闭子窗口

本文关键字:窗口 wpf-mvvm 视图 模型 | 更新日期: 2023-09-27 18:22:17

单击确定/取消后关闭子Window

我正在从父mvm模型调用子窗口:

//parent view model
var optionSetViewModel = new OptionSetViewModel();
var optionSet = new OptionSet();
optionSet.SetViewModel(optionSetViewModel);
optionSet.SetOwner(_componentview);
optionSet.ShowDialog();

Window的ok和cancel代码是在子视图模型中编写的

private void OkClick()
{           
    _childWindow.Close();
}

它关闭得很好,但在关闭后,当它从调用它的地方返回到父视图模型时,它抛出了null引用异常。关闭后,我正在访问子窗口值:

_someText = optionSetViewModel.SomeText;
_noteText = optionSetViewModel.NoteText;
_optionsetLanguage = optionSetViewModel.OptionSetSelectedItem;
_optionsetselected = optionSetViewModel.OptionSetSelected.ToString();

从父视图模型wpf-mvvm关闭子窗口

使用Catel(请参阅http://www.catelproject.com/)可以基于视图模型关闭视图。因此,关闭视图意味着这样的调用:

myChildViewModel.CloseViewModel();

显示子窗口:

var myChildViewModel = new MyChildViewModel();
uiVisualizerService.Show(myChildViewModel);