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”