我正在寻找一个wpf控件(免费或商业)。 树应支持所有常规树视图特性(样式,数据模板,控件模板......),并支持使用Columns布局(类似于Visual Studio中的Watch窗口)。
但是:
我不希望自己构建树,我正在寻找现有的实施,至少支持虚拟化和数据虚拟化。
答案 0 :(得分:3)
我知道谁可以应用您的要求的最佳控件是Telerik RadTreeView。查看demo。优点:
RadTreeView API支持UI虚拟化,它只处理可视区域中加载的信息,从而减少了应用程序的内存占用空间并加快了加载时间,从而进一步提高了UI性能
Telerik RadTreeView控件在使用大量项目时的性能通过其按需加载功能得到显着优化。当用户通过单击“+”图标
扩展父节点时,此机制允许节点加载其子节点RadTreeView是一种数据驱动控件,旨在显示大量分层数据,并且不提供开箱即用的搜索,过滤和排序功能。因此,这样 应该对它所代表的数据实施操作。 Example
答案 1 :(得分:2)
我见过的最好的例子是TreeView by Josh Smith。它使用按需加载加载并具有文本搜索功能。
要包含DataVirtualization
,您应该使用:
<TreeView
VirtualizingStackPanel.IsVirtualizing = "True"
VirtualizingStackPanel.VirtualizationMode = "Recycling" />
但请注意,Virtualization
仅在TreeView
使用Binding
时有效,而则不在逐个生成节点时有效代码如下例所示:
TreeViewItem rootItem = new TreeViewItem() { Header = "Item Level 0" };
for (int i = 0; i < 1000; i++)
{
TreeViewItem itemLevel1 = new TreeViewItem() { Header = "Item Level 1" };
itemLevel1.Items.Add(new TreeViewItem());
rootItem.Items.Add(itemLevel1);
}
<强>更新强>
您可以使用the DevExpress TreeList控件。这是免费试用。
或Telerik's TreeView控件。这是30天免费试用。 查看他们的演示,您甚至可以下载并试用它们。
<强> UPDATE1:强>
如果您对表现TreeView by Josh Smith有任何疑问,那么我可以谈谈我的经历:
TreeView
并非绝对违反MVVM规则,因为viewModels
使用TreeViewItems
。这意味着如果TreeViewITem
中有viewModel
,则不会遇到奇怪的错误或例外情况。例如,this error。总而言之,我想说我很高兴我在我的生产应用程序中选择TreeView by JoshSmith
因为支持和编辑它非常简单。它的表现非常出色。
我TreeView
的照片: