generic.xamlにないデフォルトテンプレートのありか(RadioMenuFlyoutItemの場合)

もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3

やりたいこと

あるとき、フライアウトの中にあるラジオボタンの、このマルの部分の形を変えたいなと思った。

※フライアウトの中身をラジオボタンにしたかったので、<RadioMenuFlyoutItem>を使っている。

で、こちらの記事でやったように、generic.xamlから<RadioMenuFlyoutItem>の標準のボタンのstyleとテンプレートをコピーして、必要なところをカスタムしよう!と思ったら、<RadioMenuFlyoutItem>のstyle/テンプレートがgeneric.xamlにない。

どうしようとなったので、その時の対応メモ。

やったこと

MSのリポジトリからテンプレートをコピーしてくる

下記の記事で、同じことをされていた。

https://docs.microsoft.com/en-us/answers/questions/145833/radiomenuflyoutitem-changing-the-39dot39-icon.html

ここには、「generic.xamlには、RadioMenuFlyoutItemのデフォルトのテンプレートはないので、マイクロソフトmicrosoft-ui-xamlリポジトリからテンプレートをコピーせよ」とあった。

今回は、RS5のテンプレートとなっている下記からテンプレートをコピーして使った。

https://github.com/microsoft/microsoft-ui-xaml/blob/d6634d1bb82697c9b700fff5adf4e9484e0952c5/dev/RadioMenuFlyoutItem/RadioMenuFlyoutItem_rs5_themeresources_v1.xaml

コピーしてきたテンプレおきるエラーを解消(要らない部分を削除)

上のテンプレートをそのままコピーして使うと、実行時(ボタンを押して、フライアウトを開こうとしたとき)にエラーが起きた。

今回、TextTrimmingは不要だったので、TextTrimmingをセットしているところを削除し、エラー解消した。
(というか、TextTrimmingが何者かわからなかった...)

次に、(RevealBrush.State)がsetterで解決できなかったというエラーが出た。

これも、特に不要だったので削除した。

●マークを変更

ここまででエラーなく動くようになったので、最後に、●マークを変えた。

テンプレートの中身を見て、x:Name="CheckGlyph"となってるFontIconが●マークだったので、そこを別のアイコンに変えた。

できあがり

学んだこと

generic.xamlの中にないデフォルトのテンプレートもある。

そういうコントロールのデフォルトテンプレートを見つけたい場合は、下記のリポジトリにある。

https://github.com/microsoft/microsoft-ui-xaml/tree/d6634d1bb82697c9b700fff5adf4e9484e0952c5/dev

devの直下にあるか、dev\CommonStylesのフォルダの中を見れが、一般的なコントロールのデフォルトのテンプレートが置かれてそう。

※むしろ、generic.xamlからとってくるより、ここからとる方がよいのかも??(未確認)

参照

RadioMenuFlyoutItem - Changing the 'dot' icon まさに同じことをされていた。ここにあったやり方で対応。

https://docs.microsoft.com/en-us/answers/questions/145833/radiomenuflyoutitem-changing-the-39dot39-icon.html

テンプレートを取ったMSのリポジトリ

https://github.com/microsoft/microsoft-ui-xaml/blob/d6634d1bb82697c9b700fff5adf4e9484e0952c5/dev/RadioMenuFlyoutItem/RadioMenuFlyoutItem_rs5_themeresources_v1.xaml

だいたいのデフォルトのテンプレートはここにありそう

https://github.com/microsoft/microsoft-ui-xaml/tree/d6634d1bb82697c9b700fff5adf4e9484e0952c5/dev