アクティビティのツールボックスアイコン
先ほどのサンプルでは、WriteLineアクティビティをコードによりツールボックスに登録を行いました。その際にToolboxItemWrapperクラスのコンストラクタで、アクティビティの型のみを指定する方法を利用していますが、オーバーロードされた他の方式では、ツールボックス上での表示文字列やアイコンを指定することができます。
'サンプル表示
wfDesign.Load(New Sequence)
Dim tlCategory As New Toolbox.ToolboxCategory("CodeZine")
tlCategory.Add(New Toolbox.ToolboxItemWrapper(GetType(WriteLine)))
wfToolbox.Categories.Add(tlCategory)
Dim tlCategory2 As New Toolbox.ToolboxCategory("WF4")
‘文字列を指定する
tlCategory2.Add(New Toolbox.ToolboxItemWrapper(GetType(Assign), "値の設定"))
‘アイコンファイルと文字列を指定する
tlCategory2.Add(New Toolbox.ToolboxItemWrapper(GetType([While]), "WF4BITMAP.bmp", "Whileループ"))
wfToolbox.Categories.Add(tlCategory2)
//サンプル表示
wfDesign.Load(new Sequence());
var tlCategory = new System.Activities.Presentation.Toolbox.ToolboxCategory("CodeZine");
tlCategory.Add(new System.Activities.Presentation.Toolbox.ToolboxItemWrapper(typeof(WriteLine)));
wfToolbox.Categories.Add(tlCategory);
var tlCategory2 = new System.Activities.Presentation.Toolbox.ToolboxCategory("WF4");
//文字列を指定する
tlCategory2.Add(new System.Activities.Presentation.Toolbox.ToolboxItemWrapper(typeof(Assign), "値の設定"));
//アイコンファイルと文字列を指定する
tlCategory2.Add(new System.Activities.Presentation.Toolbox.ToolboxItemWrapper(typeof(While), "WF4BITMAP.bmp", "Whileループ"));
wfToolbox.Categories.Add(tlCategory2);
このようにツールボックス上の表示を指定することができますが、アイコンの画像については注意する必要があります。コンストラクタを利用して指定するのは、アイコン画像のファイル名であり実行時のパスを意識する必要があります。なおアイコン画像として推奨されるサイズは16x16ピクセルであり、それより大きいサイズで画像を用意すると上記サンプル画像のように文字列とずれた表示となってしまう点も注意してください。
WF4標準アクティビティのアイコンについて サンプルプログラムの画面を見て、WF4標準アクティビティであるWriteLineアクティビティのアイコンが歯車になっていることを不思議に思われた方がいらっしゃるかも知れません。Visual Studioのツールボックスで同アクティビティを見ると、アイコン画像が表示されているのですが、リホスティングデザイナとして自作アプリから利用する場合には、アプリ側で表示するアイコンをすべて指定する必要があります。その際に問題になるのが、標準アクティビティのアイコンはどこにあるのか、という点です。
実際には2か所にアイコンリソースは保持されています。1つはMicrosoft.VisualStudio.Activities.Dllで、これはVisual Studioをインストールした環境でのみ利用が許されています。もう一つはSystem.Activities.Presentation.Dllで、こちらは.NET Framework標準のライブラリなので、誰でも利用することが可能です。詳しいやり方については私のBlogに記載してありますので、そちらも参照してみてください。
ツールボックス上に表示する文字列は自由に設定できますので、ここで見た目で処理をイメージしやすくしておくと、利用する際にとって非常に使いやすいものになると思います。
