Есть несколько способов загрузить DataGrid с помощью XML (есть и другие):
- Использование XmlDataProvider
- Чтение XML из кода программы
Вот очень грубый пример, в котором используются оба метода.
XAML
<Window x:Class="WpfApplication1.MyDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MyDataGrid" Height="300" Width="300">
<Window.Resources>
<XmlDataProvider x:Key="BookData"
Source="C:\Somewhere\Books.xml" XPath="Data"/>
</Window.Resources>
<StackPanel>
<DataGrid
ItemsSource="{Binding Path=Elements[Book]}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGrid1"
VerticalAlignment="Top" HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Header="Author"
Binding="{Binding Path=Element[Author].Value}"/>
<DataGridTextColumn
Header="Title"
Binding="{Binding Path=Element[Title].Value}"/>
<DataGridTextColumn
Header="Version"
Binding="{Binding Path=Element[Version].Value}" />
</DataGrid.Columns>
</DataGrid>
<DataGrid
DataContext="{StaticResource BookData}"
ItemsSource="{Binding XPath=Book}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGrid2" Margin="0,25,0,0"
VerticalAlignment="Top" HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Header="Author"
Binding="{Binding XPath=Author}"/>
<DataGridTextColumn
Header="Title"
Binding="{Binding XPath=Title}"/>
<DataGridTextColumn
Header="Version"
Binding="{Binding XPath=Version}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Window>
Код позади
using System.Windows;
using System.Xml.Linq;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MyDataGrid.xaml
/// </summary>
public partial class MyDataGrid : Window
{
public MyDataGrid()
{
InitializeComponent();
var xml = XDocument.Load( "c:\\Somewhere\\Books.xml" ).Root;
dataGrid1.DataContext = xml;
}
}
}
для справки
Наконец, вот пара статей:
- Свойство Binding.XPath на MSDN
- Настройка отображения данных с привязкой данных и WPF> Использование данных XML
- Пример DataGrid с использованием данных XML