WPFのTreeViewの要素を数える
WPFのTreeViewの要素を数え上げるのをぱっと見調べても見つからなかったので書く
まあ正確にはTreeViewにバインドしたやつの数をしっかり数え上げたんだけども
結構悩んだけど再帰に気づけばあっさり片付いた。
数える対象のクラス
まずはバインドしている数え上げの対象クラスの概要。
中に自分のリストを持つのが特徴。
自分の下がなければItemsはnullにしている。
public class TItem
{
~略
public List<TItem> Items { get; set; }
}
実際の関数部分
refを使っているから隠す感じで2つの関数に分けた。
Itemsがnullになるまで再帰で潜るだけ。
public int TreeCount()
{
int count = 0;
this._TreeCount(this, ref count);
return count;
}
private void _TreeCount(TItem item , ref int count)
{
if (item.Items != null)
{
foreach (var i in item.Items)
this._TreeCount(i, ref count);
}
count++;
}
再帰だと簡単だった。
実際に数える際には
実際にはTreeViewにバインドするのはTIemのコレクションなので
それをまとめて数え上げる。
上の関数2つをTItem内に入れてある場合は↓な感じでやって求める。
//実際にはバインドしている値なのでこの辺はイメージ
var TItems = new ObservableCollection<TItem>();
//欲しい値
var count = TItems.Sum(v => v.TreeCount());
Author And Source
この問題について(WPFのTreeViewの要素を数える), 我々は、より多くの情報をここで見つけました https://qiita.com/kskhsn_kskhsn15/items/808006310cb7a582749d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .