如何:在数据绑定中使用 XML 命名空间

示例

本示例演示如何处理在 XML 绑定源中指定的命名空间。

如果您的 XML 数据具有以下 XML 命名空间定义:

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

您可以使用 XmlNamespaceMapping 元素将命名空间映射到 Prefix,如下例所示。 然后,您可以使用 Prefix 来引用 XML 命名空间。 本示例中的 ListBox 显示每个标题dc:date

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

  <XmlDataProvider Source="https://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}"/>

请注意,您指定的 Prefix 不一定要与 XML 源中使用的前缀相匹配;这样,如果 XML 源中的前缀更改,您的映射仍可以起作用。

在此特定示例中,XML 数据来自于一个 Web 服务,但 XmlNamespaceMapping 元素还处理内联 XML 或嵌入式文件中的 XML 数据。

请参见

任务

如何:使用 XMLDataProvider 和 XPath 查询绑定到 XML 数据

概念

数据绑定概述

其他资源

数据绑定帮助主题