次の単純な wpf アプリケーションがあります。
アプリ.xaml:
<Application x:Class="TestWpf2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
アプリ.xaml.cs:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
var parentWindow = new Window();
parentWindow.Show();
var childWindow1 = new Window { Owner = parentWindow };
childWindow1.Show();
var childWindow2 = new Window { Owner = parentWindow };
childWindow2.Show();
}
}
アプリケーションにより、画面に 3 つのウィンドウが表示されます。アプリケーションを実行して 2 つの子ウィンドウを閉じると、親ウィンドウはタスク バーに最小化されます。をコメントアウトしchildWindow2.show()
てアプリケーションを実行し、単一の子ウィンドウを閉じると、親ウィンドウはタスクバーに最小化されません。
この問題を回避するには、次のコードを追加します。
childWindow1.Closing += delegate(object sender, CancelEventArgs ex)
{
(sender as Window).Owner = null;
};
しかし、私はこのようなハックを使用したくありません。なぜこの問題が発生するのかを理解したいのです。
なぜこれが起こるのですか?