Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példa bemutatja, hogyan lehet XML-adatokat egy ItemsControl-hoz hozzákötni XDocumenthasználatával.
példa
A következő XAML-kód definiál egy ItemsControl, és tartalmaz egy adatsablont a Planet XML-névtérben http://planetsNS típusú adatokhoz. Névteret foglaló XML-adattípusnak kapcsos zárójelek közé kell helyeznie a névteret, és ha olyan helyen jelenik meg, ahol XAML-jelölőbővítmény fordulhat elő, akkor a névtér elé egy zárójelek közti elválasztási sorozatot kell tenni. Ez a kód a Element osztály Attribute és XElement metódusainak megfelelő dinamikus tulajdonságokhoz kötődik. A dinamikus tulajdonságok lehetővé teszik, hogy az XAML olyan dinamikus tulajdonságokhoz kössön, amelyek megosztják a metódusok nevét. További információ: LINQ–XML dinamikus tulajdonságok. Figyelje meg, hogy az XML alapértelmezett névtér-deklarációja nem vonatkozik az attribútumnevekre.
<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>
A következő C#-kód meghívja Load, és beállítja a verempanel adatkörnyezetét az SolarSystemPlanets XML-névtérben http://planetsNS nevű elem összes alelemére.
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()
Az XML-adatok XAML-erőforrásként tárolhatók ObjectDataProviderhasználatával. Az egész példáért tekintse meg a L2DBForm.xaml forráskódot. Az alábbi minta bemutatja, hogyan állíthatja be a kód az adatkörnyezetet egy objektumerőforrásra.
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()
A Element és Attribute megfeleltetendő dinamikus tulajdonságok rugalmasságot biztosítanak az XAML-ben. A kód egy XML-lekérdezés LINQ-jának eredményeihez is kapcsolódhat. Ez a példa egy elemérték alapján rendezett lekérdezési eredményekhez kapcsolódik.
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
Lásd még
.NET Desktop feedback