2011-10-12 59 views
5

我有一個XML文件(見下文),可以顯示列表框中的所有產品名稱。 我希望列表框中的每個條目都顯示產品名稱,後跟價格,而不僅僅是產品名稱。如何爲listbox中的項目執行datatemplate?

如何在XAML文件中執行datatemplate?謝謝。

簡體XML文件:

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

簡化的XAML文件:

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

在我的C#文件,我使用LINQ收集產品從XML文件,指定變種產品listBox1.DataContext它工作正常。現在我只想添加價格。謝謝。

回答

2

你做到這一點,與任何其他ItemTemplate

確保您綁定到Product而不是Name。然後,您可以使用XPath從XML中選擇值,如下所示。

<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

假設你的ItemsSource是IEnumerable<Product>類型,具有

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

您可以設置的項目模板是這樣的:

<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

好,但是OP綁定到XML,而不是對象。 –

+0

@Kirk:我無法從問題中推斷出這一點。 「從XML文件收集產品」不是一個技術術語。隨着你的答案,他現在可以選擇。 =) – Jens

+0

+1你是對的。 –

相關問題