XmlDataProvider

Последнее обновление: 26.02.2016

XmlDataProvider используется для подключения к xml-документам. Причем xml-документом в данном случае может быть и локальный xml-файл, и xml из интернета. Для организации связи с источником данных XmlDataProvider использует следующие свойства:

  • Source: устанавливает источник данных

  • XPath: задает путь внутри документа xml к целевому набору данных

  • Document: устанавливает ссылку на xml-документ

  • IsAsynchronous: при значении true загружает данные асинхронно

К примеру, определим в проекте файл phones.xml:

<?xml version="1.0" encoding="utf-8" ?>
<phones>
  <phone>
    <id>1</id>
    <title>Lumia 950</title>
    <company>Microsoft</company>
  </phone>
  <phone>
    <id>2</id>
    <title>Elite X3</title>
    <company>HP</company>
  </phone>
  <phone>
    <id>3</id>
    <title>Fierce XL</title>
    <company>Alcatel</company>
  </phone>
</phones>

Теперь обратимся к этому файлу через XmlDataProvider:

<Window x:Class="DataProvidersApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DataProvidersApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <XmlDataProvider x:Key="phonesProvider" Source="phones.xml" XPath="phones" />
    </Window.Resources>
    <Grid>
        <ListBox x:Name="phonesList" DisplayMemberPath="title" 
                 ItemsSource="{Binding Source={StaticResource phonesProvider}, XPath=phone}" />
    </Grid>
</Window>

XmlDataProvider определяется как ресурс. Его свойству Source присваивается название xml-файла. Свойство XPath указывает, что все данные для провайдера в файле будет находиться в рамках элемента <phones>.

В элементе ListBox как обычно устанавливаем свойство ItemsSource, при этом используя параметр привязки XPath. В данном случае он указывает на элемент из xml, на основе которого будут создаваться элементы в ListBox, то есть элемент <phone>.

Здесь важно отметить, что в XPath используются регистрозависимые строки. То есть в файле xml определен элемент <phones> - с маленькой буквы, поэтому в XPath также используется название с маленькой буквы: XPath="phones". То же самое касается и свойства DisplayMemberPath="title".

В итоге у нас получится следующий список:

XmlDataProvider в WPF
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850