2011-10-12 11 views
5

Bir XML dosyasına sahibim (aşağıya bakın) ve tüm Ürün İsimlerini bir liste kutusunda görüntüleyebilir. Listede yer alan her bir girdiyi, Ürün Adını ve ardından Ürün Adını değil, Fiyat listesini görüntülemek istiyorum.Liste kutusunda öğeler için nasıl veri sayfası yapılır?

Veritabanını XAML dosyasında nasıl yaparım? Teşekkürler.

Basitleştirilmiş XML dosyası:

<Product> 
<Name>Red Chair</Name> 
<Price>29.5</Price> 
</Product> 

Basitleştirilmiş XAML dosyası: Benim C# dosyasında

<DockPanel>  
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" >  
</ListBox> 
</DockPanel> 

, ben XML dosyasından ürünlerini toplamak ve listBox1.DataContext için var ürünlerini atamak için LINQ kullanmak ve iyi çalışıyor. Şimdi sadece fiyatı eklemek istiyorum. Teşekkürler.

cevap

2

Başka ItemTemplate olarak bu aynı şeyi.

Name değil, Product numaralı bağlayıcıya bağlandığınızdan emin olun. Daha sonra, XPath kullanarak XML'den değerleri seçebilirsin, böyle bir şey.

<DockPanel> 
    <ListBox Name="listBox1" 
      ItemsSource="{Binding}" 
      Margin="10" >  
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <StackPanel> 
      <TextBlock Text={Binding XPath=./Name} /> 
      <TextBlock Text={Binding XPath=./Price} /> 
     </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 
</DockPanel> 
2

sizin ItemsSource varsayarsak böyle bir öğe şablonu ayarlayabilirsiniz

class Product 
{ 
    public string Name { get; set; } 
    public double Price { get; set; } 
} 

ile, tip IEnumerable<Product> taşımaktadır:

<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text = "{Binding Name}" /> 
       <TextBlock Text = "{Binding Price, StringFormat=f2}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

İyi ama OP XML'ye değil, nesneye değil. –

+0

@Kirk: Bunu sorudan çıkaramadım. "XML dosyasındaki ürünleri toplamak" teknik bir terim değildir. Cevabınla şimdi seçebilir. =) – Jens

+0

+1 haklısınız. –

İlgili konular