有没有办法只在父节点展开时加载子节点?我遇到的问题是,如果某个节点没有任何子节点,则不会显示“展开”图标。因为我不想在点击图标之前加载孩子,所以我留下了一点点捕捉。
答案 0 :(得分:4)
首先,阅读这篇文章: http://bea.stollnitz.com/blog/?p=55
其次,继承TreeViewItem和TreeView:
public class TreeViewItemEx : TreeViewItem {
protected override DependencyObject GetContainerForItemOverride() {
TreeViewItemEx tvi = new TreeViewItemEx();
Binding expandedBinding = new Binding("IsExpanded");
expandedBinding.Mode = BindingMode.TwoWay;
tvi.SetBinding(TreeViewItemEx.IsExpandedProperty, expandedBinding);
return tvi;
}
}
public class TreeViewEx : TreeView {
protected override DependencyObject GetContainerForItemOverride() {
TreeViewItemEx tvi = new TreeViewItemEx();
Binding expandedBinding = new Binding("IsExpanded");
expandedBinding.Mode = BindingMode.TwoWay;
tvi.SetBinding(TreeViewItemEx.IsExpandedProperty, expandedBinding);
return tvi;
}
}
第三,将Model的属性绑定到“IsExpanded”。
答案 1 :(得分:1)
使用树视图,您通常必须加载每个显示节点的子节点。
因此,如果您只显示根,则还需要加载根目录。扩展根目录后,如果您想为这些孩子进行扩展,则需要加载每个孩子的子女。
答案 2 :(得分:1)
完全可以让树控件按需加载子节点,您可以使用Silverlight TreeView执行此操作。当您填充根节点时,如果其数据来自数据库,那么对于每个节点也会返回它是否有子节点,如果确实添加了一个虚拟子节点,这将使控件放在+旁边它。处理展开的事件,并查看子节点是否为虚节点,如果删除它,则从数据库中获取子节点并添加它们。
答案 3 :(得分:0)