我在树视图中设置了以下XML:
<Root Value="YES">
<Child Name="Test">
<Sibling Data="Yes">
<Last UserData="1"/>
</Sibling>
<Sibling Data="No"/>
</Child>
<Child Name="Test2"/>
</Root>
然后我在我的窗口中设置了以下代码:
<Window.Resources>
<XmlDataProvider x:Key="dataProvider" XPath="Root" Source="C:\XML.xml" />
<HierarchicalDataTemplate DataType="Root" ItemsSource="{Binding XPath=*}">
<TextBlock Text="{Binding XPath=@Value}" />
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="Blue">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Child" ItemsSource="{Binding XPath=*}">
<TextBlock Text="{Binding XPath=@Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Sibling" ItemsSource="{Binding XPath=*}">
<TextBlock Text="{Binding XPath=@Data}" />
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Margin="12" x:Name="trv"
ItemsSource="{Binding Source={StaticResource dataProvider}}" />
</Grid>
我想在每个节点的所有子项周围都有一个边框控件,如下图所示:
http://www.hardcodet.net/uploads/2008/03/tree-dialogik.png
换句话说,您会注意到我链接到的图像中,父节点 dialogik.Memory 有一个深灰色边框,围绕着它及其子节点。这就是我想要达到的效果。
我需要在代码中进行哪些更改才能使其正常工作?
谢谢!
答案 0 :(得分:1)
TreeView无法做到这一点。你可以使用Expander,见这里:
http://msdn.microsoft.com/en-us/library/system.windows.controls.expander.aspx
..然后类似地绑定它:你有一个ItemsControl为每个项目输出一个Expander,然后Expander将包含递归的子项目的另一个ItemsControl。
希望有所帮助!