这里有一个变化的版本我刚才的回答。这一次使用TreeView的ItemsSource时将数据绑定
XML数据:
<data>
<datanode Header="node0" >
<datanode Header="data01" />
<datanode Header="data02" >
<datanode Header="data021" />
<datanode Header="data022" />
</datanode>
<datanode Header="data03" />
</datanode>
<datanode Header="node1" >
<datanode Header="data11" />
</datanode>
<datanode Header="node2" >
<datanode Header="data21" />
</datanode>
</data>
XAML:
<Grid>
<Grid.DataContext>
<XmlDataProvider Source="Data.xml" XPath="/data/datanode" />
</Grid.DataContext>
<TreeView x:Name="myTreeView" Height="271" HorizontalAlignment="Left" Margin="47,12,0,0" VerticalAlignment="Top" Width="236" SelectedItemChanged="myTreeView_SelectedItemChanged" ItemsSource="{Binding}" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding}" >
<TextBlock Text="{Binding [email protected]}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
CS:
private void myTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
foreach (XmlElement dataNode in ((XmlElement)e.NewValue).ChildNodes)
{
TraverseChildrenData(dataNode);
}
}
public void TraverseChildrenData(XmlElement treeViewItem)
{
//do whatever you want to do with child data item here..
MessageBox.Show(treeViewItem.Attributes["Header"].Value);
foreach (XmlElement child in treeViewItem.ChildNodes)
{
TraverseChildrenData(child);
}
}
什么是你的树视图中的XAML是什么样子?你将ItemsSource绑定到数据结构还是手动创建TreeViewItems? – Bubblewrap 2010-09-10 08:21:50
ItemsSource!__________________________ – Keepq 2010-09-10 08:32:26