2009-02-26 146 views
23

我可以將數據導入到我的TabControl中,但標題周圍有框架,我無法從標籤頁到標籤頁。如何將List集合綁定到WPF中的TabControl標頭?

我在做這個TabControl上的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 ...我有使用Silverlight類似的問題,因爲他們不支持的ItemSource轉換器用於tabcontrol。 – 2009-11-01 18:38:02

+0

請參閱Christof的答案(http://stackoverflow.com/questions/589802/how-can-i-bind-a-list-collection-to-tabcontrol-headers-in-wpf/3196668#3196668)爲XAML製作這項工作 - 因爲TabControl.ItemTemplate僅適用於選項卡的標題部分,所以需要內容的TabControl.ContentTemplate塊。 – 2011-01-27 22:14:19

回答

6

只是你的目錄綁定到你的TabControl的ItemsSource爲,例如,

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

這將爲您提供客戶中每個對象的選項卡。

+2

謝謝,這讓我進一步,但我現在我不能點擊從標籤到標籤和標題文本週圍有框架。我發佈了上面的新代碼,需要更改什麼,以便我可以將數據綁定到標題和標籤的內容? – 2009-02-26 10:05:38

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>