わかりましたので、コンテキスト固有の情報を表示するユーザーの要求で(プログラムの通常の操作中に)ポップアップするウィンドウがあります。このウィンドウにはたまたま多くの要素が含まれているため、読み込みに 0.5 ~ 1 秒かかります。ただし、このウィンドウにはコンテキストに応じていくつかの異なる種類の情報が含まれると予想されるため、コンテンツの幅と高さが異なる場合があります。したがって、SizeToContent 値を「WidthAndHeight」に設定して、ウィンドウにバインドされているコンテンツに基づいてウィンドウのサイズを変更できるようにします。
ただし、ウィンドウの読み込みには時間がかかるため、ユーザーには最初に小さな正方形のウィンドウが表示され、すべてがレンダリングされた後にフルサイズのウィンドウが表示されます。完全に読み込まれる前に、ユーザーに小さなウィンドウが表示されないようにしたいと思います。
ウィンドウが完全にレンダリングされた後にのみ表示されるようにする方法はありますか?
私が試したこと:
ウィンドウの可視性を「非表示」に設定してから、ContentRendered イベント ハンドラで「可視」に設定します。ウィンドウは表示されません。
ウィンドウの不透明度を 0 に設定してから、ContentRendered イベント ハンドラーで 1 に設定します。ウィンドウ自体のコンテンツの不透明度は 0 に設定され、次に 1 に設定されます。
更新:別の試み
また、XAML で Window.WindowState を「Minimized」に設定してから、ContentRendered イベント ハンドラで「Normal」に設定しようとしました。ウィンドウ自体の幅は本来よりも大きいですが、これは部分的に機能しているようです。さらに悪いことに、ウィンドウのコンテンツがウィンドウの正しいサイズに従ってレンダリングされ、コンテンツを再レンダリングせずにウィンドウが大きくなったように見えます。したがって、コンテンツはウィンドウの中央に配置されず、ウィンドウの正しいサイズと現在の (大きい) サイズの違いを表す厄介な黒い四角形がコンテンツの右側に表示されます。ウィンドウの端をつかんで手動でウィンドウのサイズを変更すると、コンテンツが適切に再レンダリングされ、すべてが正常に表示されます。しかし、コードでそのような再レンダリングを強制するにはどうすればよいでしょうか? Window.UpdateLayout() は機能しません。