#966 – ListBox Data Binding Basics, part III
December 6, 2013 1 Comment
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)); } }
Pingback: #967 – ListBox Data Binding Basics, part IV | 2,000 Things You Should Know About WPF