C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、Xamlに追加した[TeachingTip]コントロールが表示されない場合の原因です。
[TeachingTip]コントロール
WinUI3のXamlに配置してWinForm時代の[ツールチップ]的な役割を果たしてくれるコントロールです。
[Button]など対象のコントロールを設定して、クリックなどのイベントで表示を行いユーザーに操作方法や動作についての説明をテキストやアイコン、画像を使っての表示が可能になっています。
WinUI3の[ExtendsContentIntoTitleBar]プロパティでタイトルバーをカスタマイズした際に、システムメニューを表示したい場合に有効です。
XAML ルートの境界内で表示
公式ドキュメントの[教育のヒント]にも記載がありますが既定値では[TeachingTip]コントロールで表示される画面は、表示するXamlのコンテンツに影響を受けます。
簡単に書くと[TeachingTip]で表示される画面サイズは、表示する画面よりも小さい必要があります。
つまり、表示する画面よりも大きな構成で作成した[TeachingTip]は影響を受けるという話です。(実際に試してみると、表示直後に画面が消されます)
そのため[TeachingTip]コントロールには[ShouldConstrainToRootBounds]プロパティがあり[True]を設定すると大きな[TeachingTip]画面の表示が可能です。
[TeachingTip]が表示されない場合には画面のサイズが原因の場合があります。
簡易非表示を有効
画面サイズとは別に[簡易非表示]が原因の場合もあります。
[簡易非表示]は[IsLightDismissEnabled]プロパティで設定され既定値ではオフ(False)になっています。
有効になった場合には[TeachingTip]で表示される画面に閉じる[×]ボタンが非表示になります。
また、表示した画面側へのアクション(スクロールやフォーカスの移動など)で[TeachingTip]で表示した画面が自動で閉じます。
[TeachingTip]コントロールの表示直後に何らかの処理で[簡易非表示]が動作するような場合には、表示されないように見えてしまう場合があります。
まとめ
今回は、WinUI3プロジェクトで、Xamlに追加した[TeachingTip]コントロールが表示されない場合の原因について紹介しました。
[TeachingTip]は、WinForm時代のツールチップや、AndroidOSのトーストのような使い方ができるコントロールです。
少ないXamlとコードで、画像やテキストなどを追加した画面の表示が可能ですが、簡易非表示や、呼び出した画面のサイズに影響を受けるなど制限もあります。
[IsLightDismissEnabled]や[ShouldConstrainToRootBounds]プロパティの設定で解決する可能性があります。
WinUI 3アプリで[TeachingTip]コントロールが表示されない人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。