2009-02-26 137 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>