正如标题所说,有没有办法在不关闭 Dialog 的情况下设置 DialogResult?
可能最简单的答案是否定的,但尽管如此,这是为什么呢? DialogResult=
背后的行为是什么?有什么办法可以覆盖它。
如果有人问我为什么需要这样的东西,简单的答案就是好奇。这种好奇心背后的“历史”是我试图从我的 ViewModel 调用对话窗口。我的方法是以下方法的混合
如果对话框有返回值(True (Ok)/False (Cancel)),我需要(从对话框 viewModel)传递处理对话框的类的值,然后将其设置为 DialogResult
以便父窗口/控件在对话框返回/关闭时获取它。
用于测试它的最小代码片段类似于
dialog.DialogResult = TheResult;
Debug.WriteLine("Dialog Closed");
dialog.Close();
虽然这不会失败,但在调用 dialog.Close();
之前将“Dialog Closed”打印到输出时,对话框会关闭。如果我覆盖 Window.Closing
事件,我可以看到它在调用 dialog.DialogResult
时触发,但在调用 dialog.Close();
时不会触发之后被调用。
注意:正如我所说,整个问题都是“出于好奇”,因为上面的代码有效并且不会损害所需的功能。
最佳答案
这是设计使然,设置 DialogResult 将关闭对话框。检查Source Code for Window.DialogResult
public Nullable<bool> DialogResult { get { .... } set { .... if (_dialogResult != value) { _dialogResult = value; if(_isClosing == false) { Close(); } } ... } } }
关于c# - 在不关闭对话框的情况下设置 DialogResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37414228/