Mega Code Archive

 
Categories / C# / WPF
 

DataTemplate for binding

<Window x:Class="WpfApplication1.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   xmlns:local="clr-namespace:WpfApplication1"   Title="Binding to a Collection"   SizeToContent="WidthAndHeight">   <Window.Resources>     <local: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>   </Window.Resources>   <StackPanel>     <TextBlock>My Friends:</TextBlock>     <ListBox Width="200" IsSynchronizedWithCurrentItem="True"              ItemsSource="{Binding Source={StaticResource MyFriends}}"/>     <TextBlock>Information:</TextBlock>     <ContentControl Content="{Binding Source={StaticResource MyFriends}}"                     ContentTemplate="{StaticResource DetailTemplate}"/>   </StackPanel> </Window> //File:Window.xaml.cs using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Data; using System.Windows.Media; using System.Collections.ObjectModel; using System.ComponentModel; namespace WpfApplication1 {         public partial class Window1 : Window     {         public Window1()         {             InitializeComponent();         }     }   public class Person : INotifyPropertyChanged   {       private string firstname;       private string lastname;       public event PropertyChangedEventHandler PropertyChanged;       public Person()       {       }       public Person(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<Person>     {         public People(): base()         {             Add(new Person("A", "Q"));             Add(new Person("B", "E"));             Add(new Person("C", "E"));             Add(new Person("D", "R"));         }     } }