我有一个主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
抛出异常。因此,我添加了一个 if 检查,使用了 IsThreadModal。它已经运行了一段时间,但现在 m_OwningWindow 没有关闭,因为 IsThreadModal 为 false。
我不知道解决这个问题的正确方法,认为我没有处理好。请帮忙解决。谢谢!