single.php

C# WinUI3 の[TeachingTip]が表示されない原因

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]コントロールが表示されない人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です