ListBox data binding : ListBox « UI Controls « Silverlight






ListBox data binding

ListBox data binding
    

<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' 
    mc:Ignorable='d' 
    d:DesignWidth='640' 
    d:DesignHeight='480'>
    <StackPanel x:Name="LayoutRoot">
        <TextBlock x:Name="TitlePrompt" Text="Title:  " />
        <TextBlock x:Name="Title" Text="{Binding Title, Mode=OneWay }" />
        <TextBlock x:Name="AuthorPrompt" Text="Author:" />
        <TextBlock x:Name="Author" Text="{Binding Author, Mode=OneWay }" />
        <TextBlock x:Name="ChapterPrompt" Text="Chapters:  "/>
        <ListBox x:Name="Chapters" ItemsSource="{Binding  Chapters, Mode=OneWay}"/>
        <TextBlock x:Name="MultipleAuthorPrompt" Text="Multiple authors?:  "/>
        <CheckBox x:Name="MultipleAuthor" IsChecked="{Binding MultipleAuthor, Mode=TwoWay}" />
        <TextBlock x:Name="QOHPrompt" Text="Quantity On Hand:" />
        <TextBox x:Name="QuantityOnHand" Text="{Binding QuantityOnHand, Mode=TwoWay}"/>
        <Button x:Name="Change" Content="Change Book"/>
    </StackPanel>
</UserControl>

//File:Page.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication3
{
   public class Book : INotifyPropertyChanged
   {
      private string bookTitle;
      private string bookAuthor;
      private int quantityOnHand;
      private bool multipleAuthor;
      private string authorURL;
      private string authorWebPage;
      private List<string> myChapters;

      public event PropertyChangedEventHandler PropertyChanged;

      public string Title
      {
         get { return bookTitle; }
         set
         {
            bookTitle = value;
            NotifyPropertyChanged( "Title" );
         }
      }   
      public string Author
      {
         get { return bookAuthor; }
         set
         {
            bookAuthor = value;
            NotifyPropertyChanged( "Author" );
         }
      }

      public List<string> Chapters
      {
         get { return myChapters; }
         set
         {
            myChapters = value;
            NotifyPropertyChanged( "Chapters" );
         }
      }


      public bool MultipleAuthor
      {
         get { return multipleAuthor; }
         set
         {
            multipleAuthor = value;
            NotifyPropertyChanged( "MultipleAuthor" );
         }
      }
      public int QuantityOnHand
      {
         get { return quantityOnHand; }
         set
         {
            quantityOnHand = value;
            NotifyPropertyChanged( "QuantityOnHand" );
         }
      }
      public void NotifyPropertyChanged( string propertyName )
      {
         if ( PropertyChanged != null )
         {
            PropertyChanged( this,new PropertyChangedEventArgs( propertyName ) );
         }

      }
   } 
   public partial class MainPage : UserControl
   {
      private Book b1;
      private Book b2;
      private Book currentBook;
      public MainPage()
      {
         InitializeComponent();
         Loaded += new RoutedEventHandler( Page_Loaded );
      }

      void Page_Loaded( object sender,RoutedEventArgs e )
      {
         Change.Click += new RoutedEventHandler( Change_Click );
         b1 = new Book();
         InitBookB( b1 );
         currentBook = b2 = new Book();
         InitBookA( b2 );
         SetDataSource();
      }

      private void InitBookA( Book b )
      {
         b.Title = "title";
         b.Author = "author";
         b.MultipleAuthor = true;
         b.QuantityOnHand = 20;
         b.Chapters = new List<string>() { "1", "2", "3", "4" };
      }

      private void InitBookB( Book b )
      {
         b.Title = "title 2";
         b.Author = "A";
         b.MultipleAuthor = false;
         b.QuantityOnHand = 150;
         b.Chapters = new List<string>(){"A", "B", "C"};
      }


      void Change_Click( object sender, RoutedEventArgs e )
      {
         if ( currentBook == b1 )
            currentBook = b2;
         else
            currentBook = b1;
         SetDataSource();
      }

      void SetDataSource()
      {
         LayoutRoot.DataContext = currentBook;
      }
   }
}

   
    
    
    
  








Related examples in the same category

1.Creating a ListBoxCreating a ListBox
2.Add a simple ListBoxItem, a TextBlock, a StackPanel to ListBox
3.Put Image to ListBoxPut Image to ListBox
4.Use TextBlock as ListBox itemUse TextBlock as ListBox item
5.A ListBox that displays the days of the weekA ListBox that displays the days of the week