我正在使用 Silverlight TreeView。当控件加载时,所有节点都关闭。当我单击其中一个节点时,该打开的父节点下的所有子节点都需要展开。我该怎么做呢?我在 TreeView 方面的经验非常有限,因此示例代码真的很有帮助。谢谢!
问问题
666 次
1 回答
0
将处理程序附加到每个 TreeViewItem 的Expanded
事件。然后,遍历子树,边走边扩展每个节点。
简单的 XAML:
<sdk:TreeView>
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="One"></sdk:TreeViewItem>
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Two">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Three">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Four">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Five" />
</sdk:TreeViewItem>
</sdk:TreeViewItem>
</sdk:TreeViewItem>
</sdk:TreeView>
后面的代码:
private void TreeViewItem_OnExpanded(object sender, RoutedEventArgs e)
{
TreeViewItem tvi = sender as TreeViewItem;
Debug.Assert(tvi != null);
if (tvi.HasItems) { ExpandChildren(tvi); }
}
private void ExpandChildren(TreeViewItem tvi)
{
foreach (var item in tvi.Items)
{
if (item is TreeViewItem) { ExpandChildren(item as TreeViewItem); }
}
tvi.IsExpanded = true;
}
但是,我不知道如何在 TreeView.ItemTemplate 中设置事件处理程序。
也许另一位读者知道如何做到这一点......?
于 2013-10-30T17:58:12.643 回答