はじめに
ListBox に代表される ItemsControl コントロールを使って、色々な形式のデータを表示する方法をまとめました。
対応方法
表示する元データ
今回は "データ形式" と "値" を個別に管理するクラスを用意しました。
class MyData
{
public enum ItemType { Bool, Int, String };
public ItemType Type { get; }
public bool BoolValue { get; set; }
public int IntValue { get; set; }
public string StringValue { get; set; }
/* コンストラクタ省略 */
}
表示する元リスト
enum型の ItemType に応じて表示形式を切り替えます。
public static List<MyData> Items => new List<MyData>()
{
new MyData(false),
new MyData(true),
new MyData(123),
new MyData("Hello"),
new MyData(null),
new MyData(4321),
new MyData("こんにちわ"),
new MyData(false),
new MyData(0),
};
表示1:データ種別に応じて表示形式を切り替える
ItemsControl.ItemContainerStyleSelector を使い、データ種別に応じて Style を切り替えます。
表示2:データ種別に応じてグルーピングする
ItemsControl.GroupStyle.HeaderTemplateSelector を使い、データ種別に応じて DataTemplate を切り替えます。
表示3:グルーピングしてデータ種別に応じて表示形式を切り替える
ItemsControl.GroupStyle.ContainerStyleSelector を使い、データ種別に応じて Style を切り替えます。
まとめ
説明は冒頭で力尽きてしまいましたが、ソースコードは以下に置いてあります。