C# 带有绑定的XML数据源问题的分层数据模板
对于下面的XML,我想使用带有WPF树视图的C# 带有绑定的XML数据源问题的分层数据模板,c#,.net,wpf,xmldatasource,C#,.net,Wpf,Xmldatasource,对于下面的XML,我想使用带有WPF树视图的HierarchycalDataTemplate 根据type中的值,我打算使用一个不同的图像,旁边有一个名称,然后从id标记的值中获取名称 <key type='Configuration'> <id field='name' value='Some value'/> </key> <key type='Container'> <id fie
HierarchycalDataTemplate
根据type中的值,我打算使用一个不同的图像,旁边有一个名称,然后从id标记的值中获取名称
<key type='Configuration'>
<id field='name' value='Some value'/>
</key>
<key type='Container'>
<id field='name' value='MyName'/>
<key type='Container'>
<id field='name' value='Data12345'/>
<key type='Container'>
<id field='name' value='Data987655'/>
<key type='Circuit'>
<id field='name' value='Data63236723'/>
</key>
</key>
</key>
</key>
我尝试了一些简单的示例,但没有一个演示如何将HierarchycalDataTemplate与属性一起使用,以及如何从属性中通过绑定获取文本
如果有人能展示HierarchycalDataTemplate对于这个XML与TreeView一起使用应该是什么样子的话,那就太好了。起初,我认为使用XML模式无法满足这些要求。但是,在测试项目中试用后,似乎一切都很好: 您需要使用
XmlDataProvider
来访问XML文件:
<XmlDataProvider Source="/WpfApplication2;component/Xml/TestXMLFile.xml"
XPath="root/key" />
然后您需要添加树视图
:
<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource ItemTemplate}" />
我不是真的想为你做整件事,所以我会让你根据你的喜好来调整。我相信你在这里会没事的。谢谢你的详细回答,我不知道风格触发器非常整洁!“Binding XPath=id/@value”真的解决了我的问题!
<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource ItemTemplate}" />
<HierarchicalDataTemplate x:Key="ItemTemplate" ItemsSource="{Binding XPath=key}" DataType="key">
<StackPanel Orientation="Horizontal" Margin="0,2">
<Image>
<Image.Style>
<Style>
<Setter Property="Image.Source" Value="Images/Default.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding XPath=@type}" Value="Container">
<Setter Property="Image.Source" Value="Images/Container.png" />
</DataTrigger>
<DataTrigger Binding="{Binding XPath=@type}" Value="Configuration">
<Setter Property="Image.Source" Value="Images/Configuration.png" />
</DataTrigger>
<DataTrigger Binding="{Binding XPath=@type}" Value="Circuit">
<Setter Property="Image.Source" Value="Images/Circuit.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Text="{Binding XPath=id/@value}" Margin="5,0" />
</StackPanel>
</HierarchicalDataTemplate>