Es gibt mehrere Möglichkeiten, ein DataGrid mit XML zu laden (es gibt auch andere):
- Die Verwendung eines XmlDataProvider
- Einlesen des XML aus dem Code-Behind
Hier ist ein sehr grobes Beispiel, das beide Methoden verwendet.
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>
Code Hinter
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;
}
}
}
Als Referenz
Zum Schluss noch ein paar Artikel:
- Binding.XPath-Eigenschaft auf MSDN
- Anpassen der Datenanzeige mit Datenbindung und WPF > Verwendung von XML-Daten
- Ein DataGrid-Beispiel mit XML-Daten