正如标题所说,是否有办法在不关闭对话框的情况下设置DialogResult?
可能的简单答案是否定的,但即使如此,为什么呢?DialogResult背后的行为是什么?有没有办法覆盖它。
对于任何人提出为什么需要这样做的问题,简单的回答是好奇心。这种好奇心背后的“历史”是,我正在尝试从我的ViewModel调用对话框窗口。我的方法是以下内容的混合: 在对话框具有返回值(True(Ok)/ False(Cancel))的情况下,我需要将该值(来自对话框viewModel)传递给处理对话框的类,然后将其设置为DialogResult,以便父窗口/控件在对话框返回/关闭时获取它。
测试它的最小代码片段如下:
虽然这并不会导致失败,但当“Dialog Closed”被输出打印后,在调用
注意:正如我所说,整个问题只是出于好奇,因为上面的代码可以正常工作,并且不会破坏期望的功能。
可能的简单答案是否定的,但即使如此,为什么呢?DialogResult背后的行为是什么?有没有办法覆盖它。
对于任何人提出为什么需要这样做的问题,简单的回答是好奇心。这种好奇心背后的“历史”是,我正在尝试从我的ViewModel调用对话框窗口。我的方法是以下内容的混合: 在对话框具有返回值(True(Ok)/ False(Cancel))的情况下,我需要将该值(来自对话框viewModel)传递给处理对话框的类,然后将其设置为DialogResult,以便父窗口/控件在对话框返回/关闭时获取它。
测试它的最小代码片段如下:
dialog.DialogResult = TheResult;
Debug.WriteLine("Dialog Closed");
dialog.Close();
虽然这并不会导致失败,但当“Dialog Closed”被输出打印后,在调用
dialog.Close();
之前,对话框会关闭。如果我重写Window.Closing
事件,我可以看到在调用dialog.DialogResult
时它被触发,但在随后调用dialog.Close();
时却没有被触发。注意:正如我所说,整个问题只是出于好奇,因为上面的代码可以正常工作,并且不会破坏期望的功能。
Close()
之前它已经关闭了吗?有出现任何异常吗?你能展示更多的代码吗? - Patrick HofmanDialogResult
,它会自动关闭窗口!这对我来说是全新的。我已经设置了DialogResult
并立即使用Close()
6年了!来源:https://learn.microsoft.com/en-us/dotnet/api/system.windows.window.close?view=netframework-4.8#remarks,引用:“对话框上的“确定”和“取消”按钮也是由开发人员提供的,尽管可能会设置DialogResult
,这将自动关闭通过调用ShowDialog
打开的窗口。” - Jogge