【发布时间】:2013-07-15 12:14:38
【问题描述】:
点击确定/取消后关闭子Window。
我正在从父 mvm 模型调用子窗口:
//parent view model
var optionSetViewModel = new OptionSetViewModel();
var optionSet = new OptionSet();
optionSet.SetViewModel(optionSetViewModel);
optionSet.SetOwner(_componentview);
optionSet.ShowDialog();
child Window 的 ok 和 cancel 代码写在子视图模型中:
private void OkClick()
{
_childWindow.Close();
}
它关闭得很好,但是当它从调用它的位置返回到父视图模型时关闭后,它会抛出空引用异常。关闭后,我正在访问子窗口值:
_someText = optionSetViewModel.SomeText;
_noteText = optionSetViewModel.NoteText;
_optionsetLanguage = optionSetViewModel.OptionSetSelectedItem;
_optionsetselected = optionSetViewModel.OptionSetSelected.ToString();
【问题讨论】:
-
我们需要在
optionSet.ShowDialog();之后查看您的代码 -
更新的代码 ppls 做检查
-
你应该让 Messenger 类处理 ViewModel 之间的关闭,这样更容易。
-
您是否在视图中重写了 OnClosing(),它是否处理某些内容或将值设置为 null?如果是这样,那就是你的空指针。调试代码时,哪个指针为空?要以最快的速度进行调试,请从主菜单中单击“调试”,然后单击“异常”,然后选中左侧顶部的第二个复选框。单击确定,然后运行您的应用程序。然后它将在引发异常的代码行上停止。将鼠标悬停在任何用于确定哪个为空的变量上。
-
嗨,Curtis thnx 建议我只有一周大的 wpf 可以给我发送一个示例,如果你有时间请教我如何做到这一点