I can get data into my TabControl but the headers have frames around them and I can't slick from tab to tab.
What am I doing wrong with the XAML binding syntax on this TabControl?
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>
code behind:
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; } }
Here ist what I would do
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; } }
And on the XAML side
<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>
just bind your List to your TabControl as ItemsSource, e.g.
<TabControl ItemsSource="{Binding Customers}"/>
this will give you a tab for each object in customer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With