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"));
}
}
}
Related examples in the same category