環境
Visual Studio 2019
Prism 8.0.0.1909
.NET5
問題
アプリを起動するときにログインフォームを開くということがあると思います。
このログインフォームをIDialogService.ShowDialogを利用して表示させようとしましたが、オーナーウィンドウから呼び出すと、.Net Framework 4.8 の時はオーナーウィンドウが先に表示されて、それからダイアログが表示されていました。
ところが、.NET5にしたところ、オーナーウィンドウが表示されず、先にダイアログが表示されるようになっていました。
すると、ダイアログが適当な位置に表示されてしまい、画面の中央に表示するということができなくなってしまいました。
dialogService.ShowDialog(PageKeys.Login, new DialogParameters { { "Login", inputValue } }, result => dialogResult = result);
よく見ると、オーナーウィンドウはあるようなのですが、透明でまだ表示されていなくて、ダイアログはそれに合わせて中央に表示というようにできないみたいでした。
解決
いろいろと調べていたところ、PrismLibraryに解決方法が書かれていました
Style the DialogWindow
You can control the properties of the DialogWindow by using a style via an attatched property on the Dialog UserControl
<prism:Dialog.WindowStyle>
<Style TargetType="Window">
<Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" />
<Setter Property="ResizeMode" Value="NoResize"/>
<Setter Property="ShowInTaskbar" Value="False"/>
<Setter Property="SizeToContent" Value="WidthAndHeight"/>
</Style>
</prism:Dialog.WindowStyle>
いろいろ知らないことがあります(~_~;)