🎃
AvavloniaUI axamlの内容をC#コードで実装する方法
やりたいこと
AvaloniaUIでUIを実装する場合、Officialのドキュメントを見ながらxamalで実装することが多い。でも、複雑な操作をやりたい場合に、UIをC#コードで生成したり操作したくなる場合がある。
(本来はaxamlですべて記述すべきなのかもしれないけど。)
コードからUIを制御するときにはサンプルコードが少なく、どうやっていいのかわからないことが少なくない。AvaloniaUIのソースコードからさかのぼって調べるのも大変。そういう場合にコードからのUI操作をどうやるのか簡単に調べたい。
使用環境
Windows 11 : Home 22H2 + Visual Studio Community 2022(64bit)
Linuxテスト環境 : 上記Windows上のWSL2 Ubuntsu 22.04.2 LTS
Visual Studio2022, AvaloniaUI 11.0.2
UI操作コードの調べ方
UIをaxaml書いてコンパイルする
まずはコードで実装したいUIをaxamlで実装する。例えばこういうの。
これをコンパイルして動作する状態にしておく。
.net逆コンパイラをインストールする
.net逆コンパイラ ILSpyをインストールする。
詳細は下記に。
dllを逆コンパイルして実装を確認する。
binフォルダ化のdllをILSpyで開く
例えば
(ApplicationName)(ApplicationName).Desktop\bin\Debug\net*(ApplicationName).dll
とかのパスにある。
目的のViewのInitializeComponent以下のコードを確認する。
ここでいうとXamlIlPopulate以下のコードを整理すると、axamlの内容がどういうC#コードになるかわかる。
Discussion