なんとなく

なんとなく書きます

WPFのTreeViewの要素を数え上げる。

WPFのTreeViewの要素を数え上げるのをぱっと見調べても見つからなかったので書く
まあ正確にはTreeViewにバインドしたインスタンスの数をしっかり数え上げたんだけども

結構悩んだけど再帰に気づけばあっさり片付いた。

まずはバインドしている数え上げの対象クラスの概要。
中に自分のリストを持つのが特徴。
自分の下がなければnullにしている。

public class TItem
{
~略
public List<TItem> Items { get; set; }
}

実際の関数部分
refを使っているから隠す感じで2つの関数に分けた。
Itemsがnullになるまで再帰で潜るだけ。

public int FileCount()
{
    int count = 0;
    this.FileCountCore(this, ref count);
    return count;
}

private void FileCountCore(TItem item , ref int count)
{
    if (item.Items != null)
    {
        foreach (var i in item.Items)
        {
            this.FileCountCore(i, ref count);
        }
    }
    count++;
}

再帰だと簡単だった。