我可以使用这种模式,Menu
但是TreeView
当我尝试使用以下内容时一定会遗漏一些东西HeaderedItemsControl
:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Page.Resources>
<HierarchicalDataTemplate x:Key="MenuItemTemplate" ItemsSource="{Binding XPath=foo}">
<AccessText Text="{Binding XPath=@a}" />
</HierarchicalDataTemplate>
<Style TargetType="HeaderedItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
<StackPanel>
<ContentPresenter ContentSource="Header"/>
<ItemsPresenter Margin="10,0,0,0" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<XmlDataProvider x:Key="RootXml" XPath="/root/foo">
<x:XData>
<root xmlns="">
<foo a="one">
<foo a="two" b="wow, two" />
<foo a="three" b="wow, three" />
<foo a="four" b="wow, four" />
</foo>
<foo a="one again">
<foo a="two others" b="wow, two others" />
<foo a="three the hard way" b="wow, three again" />
</foo>
</root>
</x:XData>
</XmlDataProvider>
</Page.Resources>
<StackPanel>
<HeaderedItemsControl
Header="My Foo List"
ItemTemplate="{Binding Source={StaticResource MenuItemTemplate}}"
ItemsSource="{Binding Source={StaticResource RootXml}}">
</HeaderedItemsControl>
</StackPanel>
</Page>
在 XamlPadX 中,这显示:
My foo list
one
one again
我需要做些什么ControlTemplate
来让数据正确显示吗?还是我需要更详细的(或额外的)HierarchicalDataTemplate
?另外:我们如何显示foo/@b
数据?