使用大量数据进行TreeView优化

3

我有一个树形视图,其中包含约4000个对象。我的树形视图的初始加载和填充来自一个对象列表,这需要很长时间。这是如何填充它的:

private List<ItemIdPair> m_itemList;
public List<ItemIdPair> ItemList {
    get { return m_itemList; }
    set { m_itemList = value; }
}

public void Window_Loaded(object sender, RoutedEventArgs e) {
    try {
        ItemList = ItemListParse(); // data from .txt file (NOT the performance problem)
        ItemList = ItemList.OrderBy(o => o.ItemName).ToList();
        ItemTreeView.DataContext = ItemList;
    } catch(Exception ex) { }
    }

我的树形视图在XAML中绑定到数据上下文。

我还有一个搜索树形视图并缩小结果的文本框,但这也会导致巨大的性能损失。它长这样:

public void LoadTree(string search) {
        try {
            List<ItemIdPair> items = ItemList.Where(i => i.ItemName.ToLower().Contains(search.ToLower())).ToList();
            ItemTreeView.DataContext = items;
        } catch(Exception ex) { }
    }

有没有任何建议可以优化这段代码,或重构它以提高性能?树形视图不应该运行得如此缓慢。

2个回答

3
尝试将虚拟化功能添加到您的TreeView中。
<TreeView Name="MyTreeView" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" />

0

尝试在您的TreeView中使用VirtualizingStackPanel。我曾经在ComboBox中遇到类似的问题,这种方法解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接