次のコードは、子ウィンドウを閉じると親ウィンドウが最小化されるという問題を示していますが、これは発生したくありません。
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
}
class CustomMessageBox : Window
{
public CustomMessageBox()
{
Owner = Application.Current.MainWindow;
}
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new SomeDialog() { Owner = this }.Show();
}
}
Window1 はメイン アプリケーション ウィンドウです。
SomeDialog は、モードレスにする必要がある Window1 内のイベント (例では window1 をダブルクリック) でポップアップするウィンドウです。
CustomMessageBox は、 modalである必要がある "SomeDialog" (例では SomeDialog をダブルクリック) 内のイベントでポップアップするウィンドウです。
アプリケーションを実行し、Window1 のコンテンツをダブルクリックして SomeDialog を表示し、次に SomeDialog のコンテンツをダブルクリックして CustomMessagebox を表示するとします。
CustomMessagebox を閉じます。罰金。
SomeDialog を閉じると、Window1 が最小化されますか? 最小化されるのはなぜですか? どうすれば停止できますか?
編集:Vivが提案した手法を使用して、回避策はかなり単純なようです。
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
Owner = null;
}
}