2013-06-09 2 views
0

Я играл с 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.

ответ

0

Okie dokie, решение было достаточно простым, я добавил пустое пространство имен в xml, а затем сделал xpaths, как обычно. Вот решение.

<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="MyDataProvider" XPath="MyDoc"> 
      <x:XData> 
      <MyDoc xmlns="">Wee 
       <ParentNode>Hi</ParentNode> 
       <ParentNode>Low</ParentNode> 
      </MyDoc> 
      </x:XData> 
     </XmlDataProvider> 
    </Page.Resources> 
    <Border BorderBrush="Green" BorderThickness="5"> 
    <Grid DataContext="{StaticResource MyDataProvider}" 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 XPath=*}" Background="LightGray"> 
    </ListBox> 
    </Grid> 
    </Border> 
</Page> 
Смежные вопросы