基于属性值的绑定对象集合
本文关键字:绑定 对象 集合 于属性 属性 | 更新日期: 2023-09-27 18:17:10
我正在尝试将对象集合绑定到Telerik TreeView控件。我的对象结构应该是这样的:
Item 1.1
- Item 1.1.1
- Item 1.2.1
- Item 1.2.2
- Item 1.1.2
...
Item n.1
- Item n.1.1
- Item n.2.1
- Item n.3.1
所有这些对象都有一个共同的bool属性,即isBindable。我想把这个集合绑定到我的TreeView控件,但是这个控件应该只绑定对象,如果它的属性是isBindable = true。
我不想在对控件执行ItemSource操作之前,循环遍历整个集合并基于isBindable逐个删除。
有更好的主意我怎么才能做到这一点,也许用LINQ?
谢谢,Bhaskar
您可以尝试使用递归实现这一点。你需要一个单独的foreach
环路。请看下面的方法。把你的集合传递给这个方法,看看它是否被过滤了。
private List<Item> Filter(List<Item> itemList)
{
List<Item> filteredItems = (from c in itemList
where c.IsBindable == true
select c).ToList();
foreach (Item item in filteredItems)
{
if (item.Item != null)
item.Item = Filter(item.Item);
}
return filteredItems;
}
class Item
{
public List<Item> Item { get; set; }
public bool IsBindable { get; set; }
public Item()
{
IsBindable = false;
}
}
您可以使用Where
:
collection.Where(x => x.isBindable);
你可以把树做成线性序列,然后像这样检查你的条件
collection.SelectMany(item=> item.SubItems).Where(subitem)