Assume that we want to use a ListBox to display a list of actors and that we have an Actor type to store all the information for a single actor.
Our next step is to create a collection of Actor instances that we’ll then be able to bind to. Below is the code-behind for a simple WPF application that creates a collection of Actor instances and stores them in an ActorList property. We also set up a SelectedActor property that will use data binding to reflect the actor that the user has currently selected.
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
this.InitializeComponent();
this.DataContext = this;
ActorList = new ObservableCollection<Actor>
{
new Actor("Ginger Rogers", 1911, 1995, "Kitty Foyle",
new Uri("ActressImages/GingerRogers.jpg", UriKind.Relative)),
new Actor("Joan Fontaine", 1917, null, "Suspicion",
new Uri("ActressImages/JoanFontaine.jpg", UriKind.Relative)),
new Actor("Greer Garson", 1904, 1996, "Mrs. Miniver",
new Uri("ActressImages/GreerGarson.jpg", UriKind.Relative)),
new Actor("Jennifer Jones", 1919, 2009, "The Song of Bernadette",
new Uri("ActressImages/JenniferJones.jpg", UriKind.Relative)),
new Actor("Ingrid Bergman", 1915, 1982, "Gaslight",
new Uri("ActressImages/IngridBergman.jpg", UriKind.Relative)),
new Actor("Joan Crawford", 1904, 1977, "Mildred Pierce",
new Uri("ActressImages/JoanCrawford.jpg", UriKind.Relative)),
new Actor("Olivia de Havilland", 1916, null, "To Each His Own",
new Uri("ActressImages/OliviaDeHavilland.jpg", UriKind.Relative)),
new Actor("Loretta Young", 1913, 2000, "The Farmer's Daughter",
new Uri("ActressImages/LorettaYoung.jpg", UriKind.Relative)),
new Actor("Jane Wyman", 1917, 2007, "Johnny Belinda",
new Uri("ActressImages/JaneWyman.jpg", UriKind.Relative)),
new Actor("Judy Holliday", 1921, 1965, "Born Yesterday",
new Uri("ActressImages/JudyHolliday.jpg", UriKind.Relative))
};
}
private ObservableCollection<Actor> actorList;
public ObservableCollection<Actor> ActorList
{
get { return actorList; }
set
{
if (value != actorList)
{
actorList = value;
RaisePropertyChanged("ActorList");
}
}
}
private Actor selectedActor;
public Actor SelectedActor
{
get { return selectedActor; }
set
{
if (value != selectedActor)
{
selectedActor = value;
RaisePropertyChanged("SelectedActor");
}
}
}
// INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private void RaisePropertyChanged(string propName)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}