Share via


Cómo: Usar espacios de nombres XML en el enlace de datos

Ejemplo

En este ejemplo se muestra cómo controlar espacios de nombres especificados en el origen de enlace de XML.

Si los datos XML tienen la definición de espacio de nombres XML siguiente:

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

Puede usar el elemento XmlNamespaceMapping para asignar un espacio de nombres a un Prefix, como en el ejemplo siguiente. A continuación, puede usar Prefix para hacer referencia al espacio de nombres XML. En este ejemplo, ListBox muestra los elementos title y dc:date de cada item.

<StackPanel.Resources>
  <XmlNamespaceMappingCollection x:Key="mapping">
    <XmlNamespaceMapping Uri="http://purl.org/dc/elements/1.1/" Prefix="dc" />
  </XmlNamespaceMappingCollection>

  <XmlDataProvider Source="http://msdn.microsoft.com/subscriptions/rss.xml"
                   XmlNamespaceManager="{StaticResource mapping}"
                   XPath="rss/channel/item" x:Key="provider"/>

  <DataTemplate x:Key="dataTemplate">
    <Border BorderThickness="1" BorderBrush="Gray">
      <Grid Width="600" Height="50">
        <Grid.RowDefinitions>
          <RowDefinition Height="25"/>
          <RowDefinition Height="25"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Text="{Binding XPath=title}" />
        <TextBlock Grid.Row="1" Text="{Binding XPath=dc:date}" />
      </Grid>
    </Border>
  </DataTemplate>
</StackPanel.Resources>

<ListBox
  Width="600"
  Height="600"
  Background="Honeydew"
  ItemsSource="{Binding Source={StaticResource provider}}"
  ItemTemplate="{StaticResource dataTemplate}"/>

Tenga en cuenta que no es necesario que el elemento Prefix que especifique coincida con el usado en el origen XML; si el prefijo cambia en el origen XML, la asignación sigue funcionando.

En este ejemplo concreto, los datos XML proceden de un servicio web, pero el elemento XmlNamespaceMapping también funciona con datos XML insertados o datos XML de un archivo incrustado.

Vea también