もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3
やりたいこと
あるとき、フライアウトの中にあるラジオボタンの、このマルの部分の形を変えたいなと思った。
※フライアウトの中身をラジオボタンにしたかったので、<RadioMenuFlyoutItem>
を使っている。
で、こちらの記事でやったように、generic.xamlから<RadioMenuFlyoutItem>
の標準のボタンのstyleとテンプレートをコピーして、必要なところをカスタムしよう!と思ったら、<RadioMenuFlyoutItem>
のstyle/テンプレートがgeneric.xamlにない。
どうしようとなったので、その時の対応メモ。
やったこと
MSのリポジトリからテンプレートをコピーしてくる
下記の記事で、同じことをされていた。
ここには、「generic.xamlには、RadioMenuFlyoutItemのデフォルトのテンプレートはないので、マイクロソフトのmicrosoft-ui-xamlのリポジトリからテンプレートをコピーせよ」とあった。
今回は、RS5のテンプレートとなっている下記からテンプレートをコピーして使った。
コピーしてきたテンプレおきるエラーを解消(要らない部分を削除)
上のテンプレートをそのままコピーして使うと、実行時(ボタンを押して、フライアウトを開こうとしたとき)にエラーが起きた。
今回、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 まさに同じことをされていた。ここにあったやり方で対応。
テンプレートを取ったMSのリポジトリ
だいたいのデフォルトのテンプレートはここにありそう
https://github.com/microsoft/microsoft-ui-xaml/tree/d6634d1bb82697c9b700fff5adf4e9484e0952c5/dev