2010-07-20 4 views
0

Après quelques heures en essayant d'atteindre un échantillon de travail, j'ai décidé de tenter ma chance ici. Je suis un débutant à WPF, mais les choses devraient devenir plus faciles avec le temps ...WPF DataGrid avec XmlDataProvider exemple simple

J'essaye d'avoir un DataGrid montrant un dossier XML que j'ai. C'est tout.

J'ai dans ma demande cars.xml

<cars> 
    <car type="Ford" size="4" /> 
    <car type="Mercedes" size="2" /> 
    <car type="BMW" size="1" /> 
    </cars> 

Maintenant, j'ai un UserControl qui ont un DataGrid (en utilisant .NET 3.5 SP1 sur VS2008 avec CodePlex ToolKit):

<dg:DataGrid ItemsSource="{Binding cars}" /> 

Comme je comprend, puisqu'il a AutoColumn il devrait me montrer une grille avec les voitures ... mais ce n'est pas. Je suppose que mon erreur est avec la liaison. Je n'ai pas cette idée de liaison si bonne dans WPF mais j'apprends. Alors, comment puis-je pointer l'ItemSource vers mon cars.xml correctement?

10x.

Répondre

1

Vous devez spécifier votre fichier XML en tant que ressource de votre grille, ou de votre fenêtre. Par exemple:

<Window.Resources> 
<XmlDataProvider XmlNamespaceManager="{StaticResource ns}" x:Key="rss" Source="http://weather.yahooapis.com/forecastrss?p=RSXX1410&amp;u=c" XPath="/rss/channel" /> 
... 

ns ressources statique -c'est un espace de noms pour les différents préfixes -si vous avez dans votre xml:

<XmlNamespaceMappingCollection x:Key="ns"> 
     <XmlNamespaceMapping Prefix="yweather" Uri="http://xml.weather.yahoo.com/ns/rss/1.0" /> 
     <XmlNamespaceMapping Prefix="geo" Uri="http://www.w3.org/2003/01/geo/wgs84_pos#" /> 
    </XmlNamespaceMappingCollection> 
... 
</Window.Resources> 

Maintenant, vous pouvez lier vos éléments XAML à vos éléments xml-:

<Grid DataContext="{Binding Source={StaticResource rss}, XPath=item}"> 
    <Image Width="200" Height="180" Source="{Binding XPath=yweather:condition/@code, Converter={StaticResource WeatherCodeToImageConverter}}" /> 
</Grid> 

Thats it.