我按照这篇文章的意见在一个TreeView控件绑定到XML文档: http://www.codeproject.com/Articles/317766/Displaying-XML-in-a-WPF-TreeView?msg=4546407#xx4546407xx如何在使用数据绑定时从TreeView中提取SelectedItem?
不过,现在我无法弄清楚如何获得所选择的项目。
这是我的XAML:
<Window.Resources>
<XmlDataProvider x:Key="xmldata" Source="cats.xml" XPath="/CategoryArray" />
<HierarchicalDataTemplate DataType="Category" ItemsSource="{Binding XPath=./*}">
<StackPanel Orientation="Horizontal">
<TextBlock Margin="5,0,0,0" Text="{Binding [email protected]}" Tag="{Binding [email protected]}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="CategoryArray" ItemsSource="{Binding XPath=./*}">
<TextBlock Margin="0" Text="eBay Categories" />
</HierarchicalDataTemplate>
</Window.Resources>
<Grid DataContext="{StaticResource xmldata}">
<TreeView Name="treeView1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding}" VirtualizingStackPanel.IsVirtualizing="False" VirtualizingStackPanel.VirtualizationMode="Standard" SelectedItemChanged="treeView1_SelectedItemChanged" />
</Grid>
这似乎并没有工作,我以为它会的方式:
private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
try
{
TreeViewItem selectedItem = treeView1.SelectedValue as TreeViewItem;
categoryName = selectedItem.Name;
categoryID = selectedItem.Tag.ToString();
categoryChosen = true;
}
catch { }
}
由于我使用这种分层数据模板和文字块,我不知道该怎么做。有任何想法吗?提前致谢。
我在这里问了同样的问题:http://stackoverflow.com/a/9143193/279516。我最终没有使用答案,因为它很复杂。我欺骗并使用了代码隐藏文件。希望这可以帮助。 – 2013-04-21 21:22:04
你是如何使用代码隐藏文件的?你的意思是你以编程方式填充树视图而不是使用绑定? – Doug 2013-04-21 21:29:18
“这看起来不像我认为的那样工作。”你可以再详细一点吗?它的表现如何? – 2013-04-21 21:36:35