Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight TreeView-节点展开时加载数据_Silverlight_Silverlight Toolkit - Fatal编程技术网

Silverlight TreeView-节点展开时加载数据

Silverlight TreeView-节点展开时加载数据,silverlight,silverlight-toolkit,Silverlight,Silverlight Toolkit,当父节点展开时,是否有方法仅加载子节点?我遇到的问题是,如果节点没有任何子节点,“展开”图标就不会显示。因为在单击图标之前我不想加载子节点,所以我留下了一点麻烦。对于树视图,通常必须加载每个显示节点的子节点 因此,如果只显示根,则还需要加载根的子级。一旦你展开根目录,你需要加载每个子目录的子目录,如果你想为这些子目录扩展内容的话。我也在看这个。我认为您需要编写自己的TreeNode子类,根据需要加载子节点。 我在WindowsForms树视图中使用的一种方法是在每个节点中添加一个空的子节点,然后

当父节点展开时,是否有方法仅加载子节点?我遇到的问题是,如果节点没有任何子节点,“展开”图标就不会显示。因为在单击图标之前我不想加载子节点,所以我留下了一点麻烦。

对于树视图,通常必须加载每个显示节点的子节点


因此,如果只显示根,则还需要加载根的子级。一旦你展开根目录,你需要加载每个子目录的子目录,如果你想为这些子目录扩展内容的话。

我也在看这个。我认为您需要编写自己的TreeNode子类,根据需要加载子节点。

我在WindowsForms树视图中使用的一种方法是在每个节点中添加一个空的子节点,然后在扩展节点并且需要真正的子节点时删除该节点。这种方法的问题是,您会得到错误的可扩展节点,但如果您可以接受它,那么这是一个简单的解决方案。

完全可以让树控件按需加载子节点,您可以使用Silverlight TreeView来实现这一点。当您填充根节点时(例如,如果数据来自数据库),则对于每个节点,还将返回是否有子节点,如果确实有子节点,则会添加一个虚拟子节点,这将使控件在其旁边放置一个+号。处理展开的事件,在此过程中,查看子节点是否为虚拟节点,如果为移除子节点,则从数据库中获取子节点并添加它们。

首先,阅读以下文章:

其次,继承TreeView项和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”