Я играл с XamlPad. Я думал, что вложу некоторый XML в XAML, чтобы дать мне поддельный набор иерархических данных. У меня мало радости. Это компилируется, но не отображает элементы в списке. (Изменить: иерархический аспект для более позднего времени. Пока я просто хочу, чтобы в списке появился материал).XmlDataProvider, XPath и ListBox
<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>
<XmlDataProvider x:Key="MyXmlData" XPath="ParentNode">
<x:XData>
<MyDoc>Wee
<ParentNode>Hi</ParentNode>
<ParentNode>Low</ParentNode>
</MyDoc>
</x:XData>
</XmlDataProvider>
</Page.Resources>
<Border BorderBrush="Green" BorderThickness="5">
<Grid DataContext="{StaticResource MyXmlData}" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListBox Grid.Row="1" Grid.Column="0" ItemsSource="{Binding}" Background="LightGray">
</ListBox>
</Grid>
</Border>
</Page>
Если удалить XPath = "ParentNode" из XmlDataProvider, он добавляет весь документ, дословно, в ListBox. Я бы предпочел иметь два узла в Listbox, по одному для каждого ParentNode.