メインの 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 チェックを追加しました。しばらく動いていましたが、IsThreadModal が false のため、m_OwningWindow が閉じなくなりました。
問題を解決する正しい方法がわからず、適切に処理しなかったと思います。助けてください。前もって感謝します