🎃

AvavloniaUI axamlの内容をC#コードで実装する方法

2024/04/06に公開

やりたいこと

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をインストールする。
詳細は下記に。
https://qiita.com/mmake/items/6ab0fb5868fb99573ebc

dllを逆コンパイルして実装を確認する。

binフォルダ化のdllをILSpyで開く
例えば
(ApplicationName)(ApplicationName).Desktop\bin\Debug\net*(ApplicationName).dll
とかのパスにある。

目的のViewのInitializeComponent以下のコードを確認する。

ここでいうとXamlIlPopulate以下のコードを整理すると、axamlの内容がどういうC#コードになるかわかる。

Discussion