2011-10-12 12 views
5

मेरे पास एक एक्सएमएल फ़ाइल है (नीचे देखें) और एक सूची बॉक्स में सभी उत्पाद नाम प्रदर्शित कर सकते हैं। मैं सूची सूची में प्रत्येक प्रविष्टि को मूल्य के बाद उत्पाद नाम प्रदर्शित करने के लिए चाहता हूं, केवल उत्पाद का नाम नहीं।सूची बॉक्स में आइटम्स के लिए डेटामैप्लेट कैसे करें?

मैं XAML फ़ाइल में डेटामैप्लेट कैसे करूं? धन्यवाद।

सरलीकृत एक्सएमएल फ़ाइल:

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

सरलीकृत XAML फाइल:

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

मेरी सी # फ़ाइल में, मैं LINQ का उपयोग एक्सएमएल फ़ाइल से उत्पादों को इकट्ठा करने और listBox1.DataContext को वर उत्पादों आवंटित करने के लिए और यह ठीक काम करता है। अब मैं सिर्फ कीमत में जोड़ना चाहता हूं। धन्यवाद।

उत्तर

2

आप इस एक ही है किसी भी अन्य ItemTemplate के रूप में।

सुनिश्चित करें कि आप पर बाध्यकारी हैं, Name पर नहीं। इसके बाद आप एक्सपीएथ का उपयोग कर एक्सएमएल से वैल्यू का चयन कर सकते हैं, ऐसा कुछ।

<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

अच्छा लेकिन ओपी एक्सएमएल के लिए बाध्यकारी है, ऑब्जेक्ट्स नहीं। –

+0

@ किर्क: मैं इस सवाल से इसे कम करने में सक्षम नहीं था। "एक्सएमएल फाइल से उत्पादों को इकट्ठा करें" तकनीकी शब्द नहीं है। आपके उत्तर के साथ, वह अब चुन सकता है। =) – Jens

+0

+1 आप सही हैं। –

संबंधित मुद्दे