LoginSignup
0
3

More than 3 years have passed since last update.

[WPF] データに応じてリストの表示形式を切り替える

Posted at

はじめに

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 を切り替えます。

WpfContainerStyleSelector.png

表示2:データ種別に応じてグルーピングする

ItemsControl.GroupStyle.HeaderTemplateSelector を使い、データ種別に応じて DataTemplate を切り替えます。

WpfDataTemplateSelector.png

表示3:グルーピングしてデータ種別に応じて表示形式を切り替える

ItemsControl.GroupStyle.ContainerStyleSelector を使い、データ種別に応じて Style を切り替えます。

WpfGroupContainerStyleSelector.png

まとめ

説明は冒頭で力尽きてしまいましたが、ソースコードは以下に置いてあります。

WpfListTemplateSwitch

参考にさせて頂いたページ

ItemsControl 攻略 ~ 外観のカスタマイズ

How to make WPF Listview works same as Photoshop layer

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3