Mega Code Archive

 
Categories / Silverlight / Data
 

Bind to a collection

<UserControl x:Class='SilverlightApplication3.MainPage'     xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'     xmlns:d='http://schemas.microsoft.com/expression/blend/2008'      xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'          xmlns:local='clr-namespace:SilverlightApplication3'      mc:Ignorable='d'      d:DesignWidth='640'      d:DesignHeight='480'>   <UserControl.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>   </UserControl.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> </UserControl> //File:Window.xaml.cs using System.ComponentModel; using System.Collections.ObjectModel; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightApplication3 {     public partial class MainPage : UserControl     {         public MainPage()         {             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"));         }     } }