2009-02-26 31 views
23

मैं अपने टैबकंट्रोल में डेटा प्राप्त कर सकता हूं लेकिन हेडर के पास उनके चारों ओर फ्रेम हैं और मैं टैब से टैब पर चाटना नहीं कर सकता।मैं डब्ल्यूपीएफ में टैबकंट्रोल हेडर को सूची संग्रह कैसे बांध सकता हूं?

इस टैबकंट्रोल पर XAML बाध्यकारी वाक्यविन्यास के साथ मैं क्या गलत कर रहा हूं?

XAML:

<StackPanel> 
    <TabControl x:Name="TheTabControl"> 
     <TabControl.ItemTemplate> 
      <DataTemplate> 
       <TabItem Header="{Binding LastName}"> 
        <StackPanel Margin="10" Orientation="Horizontal"> 
         <TextBlock Text="{Binding FirstName}"/> 
         <TextBlock Text=" "/> 
         <TextBlock Text="{Binding LastName}"/> 
        </StackPanel> 
       </TabItem> 
      </DataTemplate>     
     </TabControl.ItemTemplate> 
    </TabControl> 

    <TabControl> 
     <TabItem Header="Tab1"> 
      <TextBlock Text="This is a test of tab 1"/> 
     </TabItem> 
     <TabItem Header="Tab2"> 
      <TextBlock Text="This is a test of tab 2"/> 
     </TabItem> 
    </TabControl> 

</StackPanel> 

कोड के पीछे:

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 

     //create all 
     List<Customer> customers = new List<Customer>(); 
     customers.Add(new Customer { FirstName = "Jim", LastName = "Smith", NumberOfContracts = 23 }); 
     customers.Add(new Customer { FirstName = "Jane", LastName = "Smith", NumberOfContracts = 23 }); 
     customers.Add(new Customer { FirstName = "John", LastName = "Tester", NumberOfContracts = 23 }); 

     //show 
     TheListBox.ItemsSource = customers; 

    } 
} 

public class Customer 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int NumberOfContracts { get; set; } 
} 
+0

यू का उपयोग कर उर भाग्यशाली पर WPF ... मैं क्योंकि वे एक ItemSource कनवर्टर का समर्थन नहीं करते Silverlight के साथ समान समस्या है tabcontrol के लिए। –

+0

क्रिस्टोफ के उत्तर को देखें (http://stackoverflow.com/questions/589802/how-can-i-bind-a-list-collection-to-tabcontrol-headers-in-wpf/3196668#3196668) XAML को बनाने के लिए यह काम - आपको TabControl.ItemTemplate केवल टैब के शीर्षलेख भाग के लिए सामग्री के लिए TabControl.ContentTemplate ब्लॉक की आवश्यकता है। –

उत्तर

6

सिर्फ ItemsSource, उदा के रूप में अपने TabControl करने के लिए अपने सूची बाँध

<TabControl ItemsSource="{Binding Customers}"/> 

यह आपको ग्राहक में प्रत्येक ऑब्जेक्ट के लिए एक टैब देगा।

+2

धन्यवाद, मुझे और मिल गया, लेकिन अब मैं टैब से टैब पर क्लिक नहीं कर सकता और हेडर ग्रंथों के चारों ओर फ्रेम हैं। मैंने ऊपर नया कोड पोस्ट किया है, क्या बदलने की जरूरत है ताकि मैं डेटा को हेडर और टैब की सामग्री में बाध्य कर सकूं? –

+1

यह मेरी समस्या है - सिवाय सबकुछ काम करता है, हेडर टेक्स्ट पर क्लिक करके टैब का चयन नहीं कर सकता है, जो टैबcontrol को लगभग बेकार बनाता है। – LineloDude

46

यहाँ पहली मैं

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     //create all 
     var customers = new List<Customer>{ 
      new Customer {FirstName = "Jim", LastName = "Smith", NumberOfContracts = 23}, 
      new Customer {FirstName = "Jane", LastName = "Smith", NumberOfContracts = 23}, 
      new Customer {FirstName = "John", LastName = "Tester", NumberOfContracts = 23}}; 

     //show 
     TheTabControl.ItemsSource = customers; 
     TheTabControl.SelectedIndex = 0; 
    } 


public class Customer 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int NumberOfContracts { get; set; } 
} 

क्या करेंगे और XAML पक्ष

<TabControl x:Name="TheTabControl">    
    <TabControl.ItemTemplate> 
     <DataTemplate>      
      <TextBlock>        
       <TextBlock Text="{Binding FirstName}"/> <TextBlock Text="{Binding LastName}"/> 
      </TextBlock>       
     </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <TextBlock>        
       This is <TextBlock Text="{Binding FirstName}"/> <TextBlock Text="{Binding LastName}"/> 
      </TextBlock> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 
+0

यह वास्तव में काम करता है। :) –

+6

आह !, 'ContentTemplate'। धन्यवाद! –

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