Mega Code Archive

 
Categories / C# / WPF
 

Binds a TabControl to a collection of Employee objects

<Window x:Class="TabControlContentTemplateSelector.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:src="clr-namespace:TabControlContentTemplateSelector"       Title="TabControlContentTemplateSelector">   <Window.Resources>     <src:People x:Key="MyFriends"/>     <DataTemplate x:Key="DetailTemplate">         <StackPanel>           <TextBlock Text="First Name:"/>           <TextBlock Text="{Binding Path=FirstName}"/>           <TextBlock Text="Last Name:"/>           <TextBlock Text="{Binding Path=LastName}"/>         </StackPanel>     </DataTemplate>     <DataTemplate x:Key="SeattleTemplate">       <DataTemplate.Resources>         <Style TargetType="TextBlock">           <Setter Property="FontSize" Value="16"/>         </Style>       </DataTemplate.Resources>      <StackPanel>           <TextBlock Text="Please welcome"/>           <TextBlock Text="{Binding Path=FirstName}"/>           <TextBlock Text=" "/>           <TextBlock Text="{Binding Path=LastName}"/>     </StackPanel>     </DataTemplate>     <src:EmployeeTemplateSelector x:Key="EmployeeSelector"/>   </Window.Resources>   <StackPanel VerticalAlignment="Center">     <TabControl Name="tabCtrl1" Width="400" Height="200"               ItemsSource="{Binding Source={StaticResource MyFriends}}"              ContentTemplateSelector="{StaticResource EmployeeSelector}"/>     <Button Width="100" Margin="10" Name="infoBtn"             Click="infoBtn_Click">       _Get Information     </Button>   </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.ComponentModel; using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Shapes; using System.Collections.ObjectModel; namespace TabControlContentTemplateSelector {     public class Employee : INotifyPropertyChanged     {         private string firstname;         private string lastname;         public event PropertyChangedEventHandler PropertyChanged;         public Employee()         {         }         public Employee(string first, string last)         {             this.firstname = first;             this.lastname = last;         }         public override string ToString()         {             return firstname.ToString();         }         public string FirstName         {             get { return firstname; }             set             {                 firstname = value;                 OnPropertyChanged("FirstName");             }         }         public string LastName         {             get { return lastname; }             set             {                 lastname = value;                 OnPropertyChanged("LastName");             }         }         protected void OnPropertyChanged(string info)         {             PropertyChangedEventHandler handler = PropertyChanged;             if (handler != null)             {                 handler(this, new PropertyChangedEventArgs(info));             }         }     }     public class People : ObservableCollection<Employee>     {         public People()             : base()         {             Add(new Employee("A", "B"));             Add(new Employee("C", "D"));             Add(new Employee("E", "F"));             Add(new Employee("G", "H"));             Add(new Employee("I", "J"));         }     }     public partial class Window1 : System.Windows.Window     {         public Window1()         {             InitializeComponent();         }         void infoBtn_Click(object sender, RoutedEventArgs e)          {             if (tabCtrl1.SelectedContent is Employee)             {                 Employee selectedEmployee = tabCtrl1.SelectedContent as Employee;                 StringBuilder personInfo = new StringBuilder();                 personInfo.Append(selectedEmployee.FirstName);                 personInfo.Append(" ");                 personInfo.Append(selectedEmployee.LastName);                 MessageBox.Show(personInfo.ToString());             }         }     }     public class EmployeeTemplateSelector : DataTemplateSelector     {         public override DataTemplate SelectTemplate(object item, DependencyObject container)         {             if (item is Employee)             {                 Employee person = item as Employee;                 Window win = Application.Current.MainWindow;                 return win.FindResource("SeattleTemplate") as DataTemplate;                 //return win.FindResource("DetailTemplate") as DataTemplate;             }             return null;         }     } }