VSTO Addin for Excel with WPF sample Ver.2024
- C# 10.0
- .Net Framework 4.8.1
- VSTO Addin
- CommunityToolkit
- ReactiveProperty
- WpfControlLib
- C# LangVersion : 10.0
- Nullable : enable
- VSTOアドインプロジェクト(以下、VSTOプロジェクト)をVSの機能で作成する。
- WPFユーザコントロールプロジェクト(以下、WPFプロジェクト)をVSの機能で作成する。
- WPFプロジェクトでWPFユーザコントロールを作成する。
- VSTOプロジェクトでWinFormsユーザコントロールを作成し、リボンにボタンなどを登録し、ボタン押下時にカスタム作業ウィンドウへWinFormsユーザコントロールを登録・表示するコードを追加する。
- WinFormsユーザコントロールへWPFユーザコントロールを登録する。
- ビジュアルエディタを用いる場合は、MaterialDesignThemeなどを使用しているWPFユーザコントロールを登録しようとすると参照エラーが出てうまくいかない。
- そこで、一旦MaterialDesignThemeなどのリソースを使用していない単純なWPFユーザコントロールを作成し、それを登録する。
- 登録時にエラーが発生しなかったら、元々登録したかった任意のWPFユーザコントロールへ変更する。
- Officeの操作は、別にOfficeアプリ操作用のライブラリプロジェクトを用意し、それにThisAddInの持つMicrosoft.Office.Interop.*のインスタンスを渡すようにする。
- 参照関係として、VSTOプロジェクト -> WPFプロジェクト -> Officeライブラリプロジェクトという関係にする。
- WPFプロジェクトからはOfficeライブラリプロジェクトを操作するだけにするとよい。どのみちMicrosoft.Office.Interop.*はGlobalsから取得できるグローバル変数のような扱いであり、GCやリソース管理についてあまり深く考えなくても使用できる。
CommunityToolkitを使う予定だったが、ReactiveCollectionに相当する機能が無いらしく悩ましい。