Silverlight TreeView を使用しています。コントロールが読み込まれると、すべてのノードが閉じられます。ノードの 1 つをクリックすると、その開いた親ノードの下にあるすべての子ノードを展開する必要があります。どうすればいいですか?TreeView に関する私の経験は非常に限られているため、サンプル コードは非常に役立ちます。ありがとう!
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 に答える