Ath*_*oud 3 c# wpf dialog mvvm
就像标题所说的那样,是否有设置对话框结果而不关闭对话框的方法?
可能的答案很简单,那就是“不”,但是,为什么呢?背后的行为是DialogResult=什么?有什么办法可以覆盖它。
对于任何问我为什么还要这样的人的人来说,简单的答案就是好奇心。好奇心背后的``历史''是我试图从ViewModel调用对话框窗口。我的方法是以下方法的混合
如果对话框具有返回值(真(确定)/假(取消)),则需要(从对话框viewModel传递)该值用于处理对话框的类,然后将其设置DialogResult为父窗口的顺序/控制以在对话框返回/关闭时获取它。
一个最小的代码片段来测试它,就像
dialog.DialogResult = TheResult;
Debug.WriteLine("Dialog Closed");
dialog.Close();
Run Code Online (Sandbox Code Playgroud)
虽然这不会失败,但是在调用之前,当“对话框已关闭”打印到输出时,对话框会关闭dialog.Close();。如果我重写了该Window.Closing事件,则可以在调用dialog.DialogResult时看到它,而在dialog.Close();随后调用get时却看不到。
注意:正如我所说,整个问题是“出于好奇”,因为上面的代码有效且不会损害所需的功能。
这是设计使然,设置DialogResult将关闭Dialog。检查源代码以获取Window.DialogResult
Run Code Online (Sandbox Code Playgroud)public Nullable<bool> DialogResult { get { .... } set { .... if (_dialogResult != value) { _dialogResult = value; if(_isClosing == false) { Close(); } } ... } } }
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |