2010-11-23 15 views
0

Je veux par programme lier un fichier XML contenant des résultats tirés de la base de données à mon Datagrid. Mon XML ressemble à:liaison WPF Datagrid à xml

<root> 
    <resultset> 
     <header> 
      <column> Col 1 </column> 
      <column> Col 2 </column> 
     </header> 

     <data> 
      <row> 
       <field>Value field 1</field> 
       <field>Value field 2</field> 
      </row> 
      <row> 
       <field>Value field 1</field> 
       <field>Value field 2</field> 
      </row> 
     </data> 
    </resultset> 
</root> 

J'essaie de cartographier l'en-tête de l'en-tête de grille de données, et les lignes aux lignes ... La seule chose est que je suis un peu coincé, je suis perdu entre les propriétés programmatiques, quelqu'un pourrait-il juste me donner un indice à quoi s'occuper?

J'ai essayé de le faire:

myDataGrid.ItemsSource = myXmlDoc 

Mais il ne permet pas vraiment rien apparaît hehe, je l'ai lu sur une propriété de liaison « chemin » mais je ne peux pas le trouver.

Répondre

1

Je suppose que vous avez déjà xmldataprovider avec votre source XML nommée myXMLDoc. puis vous pouvez lier des données XML à vos contrôles WPF.

ItemsSource="{Binding Source={StaticResource myXMLDoc}, XPath=row}}" //bind "row" elements to your control 
+0

WOW Je ne savais pas que je pourrais mettre des expressions par programme ... mec c'est génial! Merci beaucoup. Ça me donne les rangées (mais c'est encore vide) mais c'est mieux que ce que j'avais avant de creuser pour comprendre ce qui ne va pas. Encore une fois, merci – CoolStraw

+0

Juste une question, Comment faites-vous pour lier les balises aux colonnes d'en-tête de DataGrid? J'ai essayé de regarder mydatagrid.columns mais c'est une collection, elle n'a pas vraiment ItemsSource ou quelque chose comme ça. Merci :) – CoolStraw

+0

@Miloud vérifier sur http://stackoverflow.com/questions/320089/how-do-i-bind-a-wpf-datagrid-to-a-variable-number-of-columns – Arseny

1

Est-ce ce que vous cherchez?

http://joshsmithonwpf.wordpress.com/2007/06/04/binding-to-xml/

Je pense que ce que vous voulez faire est de brancher ItemsSource à un XmlDataProvider (que vous pouvez créer dans le code), avec son ensemble XPath à /root/resultset/data/row. Ensuite, pour chaque élément que vous pouvez utiliser, dites Text = {Binding XPath=./field}. Je suis un peu incertain sur les détails puisque je n'ai pas fait cela depuis un moment, mais j'espère que cela vous mettra dans la bonne direction.

+0

MERCI pour votre réponse Rei. La chose est que je veux réaliser ceci ** par programmation ** (ne peut pas le faire en XAML en raison du but de l'application/arch.). Et le fait est que d'une manière programmatique, je ne peux plus utiliser d'expressions de liaison, c'est pourquoi je me perds un peu parmi toutes ces propriétés, je lis un article sur la liaison de données, mais il est encore confus. (** new ** à wpf en passant: p) – CoolStraw