我有一个主 WPF 窗口,mywindow.showDialog 当在窗口上单击一个按钮时,执行一个命令让我们说命令是 SendToTableCommand
protected virtual void SendToTableExecute(object o)
{
UIThread.BeginInvoke(new Action<object>(SendToTableExecuteUI),o);
}
private void SendToTableExecuteUI(object o)
{
if (o is Control)
{
m_OwningWindow = UIHelper.FindVisualParent<Window>((Control)o);
}
do sth...
if (m_OwningWindow != null)
{
//only set DialogResult when window is ShowDialog before
if(System.Windows.Interop.ComponentDispatcher.IsThreadModal)
m_OwningWindow.DialogResult = true;
}
}
前段时间,m_OwningWindow.DialogResult = true
抛出异常。所以我添加了一个使用 IsThreadModal 的 if 检查。它已经工作了一段时间,但现在 m_OwningWindow 没有关闭,因为 IsThreadModal 为假。
我不知道解决问题的正确方法是什么,并且认为我没有正确处理它。请帮忙。提前致谢