5

有没有办法在父节点展开时只加载子节点?我遇到的问题是,如果节点没有任何子节点,则不会显示“展开”图标。由于在单击图标之前我不想加载孩子,所以我留下了一些问题 22。

4

4 回答 4

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;
    }
}

第三,将模型的属性绑定到“IsExpanded”。

于 2009-10-08T06:09:29.570 回答
1

使用树视图,您通常必须加载每个显示节点的子节点。

因此,如果您只显示根目录,您也需要加载根子目录。展开根目录后,如果要为这些孩子扩展内容,则需要加载每个孩子的孩子。

于 2008-11-22T08:11:06.973 回答
1

完全可以让树控件按需加载子节点,您可以使用 Silverlight TreeView 执行此操作。例如,当您填充根节点时,如果此数据来自数据库,那么对于每个节点也返回它是否有子节点,如果有,则添加一个虚拟子节点,这将使控件在旁边放一个 +它。处理扩展事件并在此查看子节点是否为虚拟节点,如果将其删除,则从数据库中获取子节点并添加它们。

于 2009-01-15T16:54:47.713 回答
0

我也在看这个。我认为您需要编写自己的 TreeNode 子类来按需加载子节点。
我在 windows 窗体 TreeView 中使用的一种方法是向每个节点添加一个空子节点,然后在节点展开并且需要真正的子节点时将其删除。这种方法的问题是你会得到错误的可扩展节点,但如果你能接受它,那么它就是一个简单的解决方案。

于 2008-11-22T09:28:25.213 回答