Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu örnek, XML verilerini ItemsControlkullanarak bir XDocument'a nasıl bağlayacağınızı gösterir.
Örnek
Aşağıdaki XAML kodu bir ItemsControl tanımlar ve Planet XML ad alanında http://planetsNS türündeki veriler için bir veri şablonu içerir. Bir ad alanını kapsayan bir XML veri türü, ad alanını süslü parantezler içinde içermelidir ve bir XAML işaretleme uzantısının görünebileceği bir yerdeyse, ad alanının önüne bir süslü parantez kaçış dizisi eklenmelidir. Bu kod, Element sınıfının Attribute ve XElement yöntemlerine karşılık gelen dinamik özelliklere bağlanır. Dinamik özellikler, XAML'nin yöntemlerin adlarını paylaşan dinamik özelliklere bağlanmasına olanak tanır. Daha fazla bilgi edinmek için bkz. LINQ to XML dinamik özellikleri. XML için varsayılan ad alanı bildiriminin öznitelik adlarına uygulanmadığını fark edin.
<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şağıdaki C# kodu Load çağırır ve yığın paneli veri bağlamını SolarSystemPlanets XML ad alanında http://planetsNS adlı öğenin tüm alt öğelerine ayarlar.
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()
XML verileri ObjectDataProviderkullanılarak bir XAML kaynağı olarak depolanabilir. Tam bir örnek için bkz. L2DBForm.xaml kaynak kodu. Aşağıdaki örnek, kodun veri bağlamını bir nesne kaynağına nasıl ayarlayabileceğini gösterir.
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()
Element ve Attribute ile eşleyen dinamik özellikler XAML içinde esneklik sağlar. Kodunuz, XML için LINQ sorgusunun sonuçlarına da bağlanabilir. Bu örnek, bir öğe değerine göre sıralanmış sorgu sonuçlarına bağlanır.
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
Ayrıca bakınız
- Bağlama Kaynaklarına Genel Bakış
- LINQ to XML ile WPF Veri Bağlamayı Genel Bakış
- LINQ to XML Kullanarak WPF Veri Bağlama Örneği
- LINQ to XML Dinamik Özellikleri
.NET Desktop feedback