Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple montre comment lier des données XML à une ItemsControl en utilisant XDocument.
Exemple :
Le code XAML suivant définit un ItemsControl et inclut un modèle de données pour les données de type Planet dans l’espace de noms XML http://planetsNS. Un type de données XML qui appartient à un espace de noms doit inclure l’espace de noms entre accolades, et s’il apparaît à un endroit où une extension de balisage XAML pourrait apparaître, il doit précéder l’espace de noms d’une séquence d’échappement pour accolades. Ce code est lié aux propriétés dynamiques qui correspondent aux méthodes Element et Attribute de la classe XElement. Les propriétés dynamiques permettent à XAML de se lier à des propriétés dynamiques qui partagent les noms des méthodes. Pour en savoir plus, consultez les propriétés dynamiques LINQ to XML. Notez comment la déclaration d’espace de noms par défaut pour le code XML ne s’applique pas aux noms d’attributs.
<StackPanel Name="stacky">
<StackPanel.Resources>
<DataTemplate DataType="{}{http://planetsNS}Planet" >
<StackPanel Orientation="Horizontal">
<TextBlock Width="100" Text="{Binding Path=Element[{http://planetsNS}DiameterKM].Value}" />
<TextBlock Width="100" Text="{Binding Path=Attribute[Name].Value}" />
<TextBlock Text="{Binding Path=Element[{http://planetsNS}Details].Value}" />
</StackPanel>
</DataTemplate>
</StackPanel.Resources>
<ItemsControl
ItemsSource="{Binding }" >
</ItemsControl>
</StackPanel>
Le code C# suivant appelle Load et définit le contexte de données du StackPanel pour tous les sous-éléments de l'élément nommé SolarSystemPlanets dans l'espace de noms XML http://planetsNS.
planetsDoc = XDocument.Load("../../Planets.xml");
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements();
planetsDoc = XDocument.Load("../../Planets.xml")
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements()
Les données XML peuvent être stockées en tant que ressource XAML à l’aide ObjectDataProviderde . Pour obtenir un exemple complet, consultez le code source L2DBForm.xaml. L’exemple suivant montre comment le code peut définir le contexte de données sur une ressource d’objet.
planetsDoc = (XDocument)((ObjectDataProvider)Resources["justTwoPlanets"]).Data;
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements();
planetsDoc = CType((CType(Resources("justTwoPlanets"), ObjectDataProvider)).Data, XDocument)
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements()
Les propriétés dynamiques qui se mappent à Element et Attribute offrent de la flexibilité au sein de XAML. Votre code peut également être lié aux résultats d’une requête LINQ pour XML. Cet exemple lie les résultats de requête classés par une valeur d’élément.
stacky.DataContext =
from c in planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements()
orderby Int32.Parse(c.Element("{http://planetsNS}DiameterKM").Value)
select c;
stacky.DataContext = From c In planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements()
Order By Int32.Parse(c.Element("{http://planetsNS}DiameterKM").Value)
Select c
Voir aussi
.NET Desktop feedback