Binds a TabControl to a collection of Employee objects : TabControl « Windows Presentation Foundation « C# / CSharp Tutorial

Home
C# / CSharp Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statement
5.String
6.struct
7.Class
8.Operator Overload
9.delegate
10.Attribute
11.Data Structure
12.Assembly
13.Date Time
14.Development
15.File Directory Stream
16.Preprocessing Directives
17.Regular Expression
18.Generic
19.Reflection
20.Thread
21.I18N Internationalization
22.LINQ
23.GUI Windows Forms
24.Windows Presentation Foundation
25.Windows Communication Foundation
26.Workflow
27.2D
28.Design Patterns
29.Windows
30.XML
31.XML LINQ
32.ADO.Net
33.Network
34.Directory Services
35.Security
36.unsafe
C# / C Sharp
C# / C Sharp by API
C# / CSharp Open Source
C# / CSharp Tutorial » Windows Presentation Foundation » TabControl 
24.63.9.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;
        }

    }
}
WPF Binds A Tab Control To A Collection Of Employee Objects
24.63.TabControl
24.63.1.Frame background, TabControl backgroundFrame background, TabControl background
24.63.2.TabControl and Frame sourceTabControl and Frame source
24.63.3.Style TabItemStyle TabItem
24.63.4.Style a TabControl using templates for the TabControl and TabItem elements.Style a TabControl using templates for the TabControl and TabItem elements.
24.63.5.TabItem HeaderTabItem Header
24.63.6.Tab page headersTab page headers
24.63.7.Put Different Objects to TabItemPut Different Objects to TabItem
24.63.8.Tab TestTab Test
24.63.9.Binds a TabControl to a collection of Employee objectsBinds a TabControl to a collection of Employee objects
24.63.10.Bind a TabControl to a data sourceBind a TabControl to a data source
24.63.11.Use a GroupBox control to create a container for a TabControl.Use a GroupBox control to create a container for a TabControl.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.