C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、SetPreferedMinSizeが実行時に[COMException:要素が見つかりません。(0x80070490)]例外が発生する現象です。
この記事は、Microsoft公式ページの「XAMLスタイル」を参考に書いています。
SetPreferredMinSizeは使えない
Microsoft公式ページの「 クイック スタート: さまざまなウィンドウ サイズのアプリの設計」で勧められている「ApplicationView.SetPreferredMinSize(Size) メソッド」を参考にして、こんな感じでサイズを設定してみると
ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(640, 640));
実行時に[COMException]が発生してしまいます。
SetPreferredMinSizeの他にもWinUI3ではGetCurrentView().TitleBarを利用する場合も同様の例外が発生します。
WinUI3ライブラリを利用する場合、GetCurrentViewやApplicationView以下のメソッドが軒並み使えない状態のようなので、回避ではなく他の方法を探した方が近道です。
Win32:SetWindowPosで設定
やはり、困った時のWin32なので[SetWindowPos]で一定の幅や高さ以下に変更されないような機能を追加できました。
詳しい内容は別記事をご覧ください。
まとめ
今回は短い記事ですが、WinUI3プロジェクトで、ウィンドウの最小サイズを設定するSetPreferredMinSizeメソッドを利用した場合にCOMExceptionが発生する現象について書きました。
[SetPreferredMinSize]メソッドは、GetCurrentView().TitleBarと同様に、WinUI3プロジェクトでは実行時に例外エラーになってしまいます。
そのため、SetWindowPosなどのWin32を利用してウィンドウサイズを変更する設定で解決するしかありません。
C#のWinUI 3アプリのウィンドウの最小サイズを設定したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。