Mega Code Archive

 
Categories / Silverlight / Data
 

DataBinding and INotifyPropertyChanged

<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 Background="White">         <TextBlock Text="Event Address" FontFamily="Verdana" FontSize="24"              HorizontalAlignment="Left" Margin="15,0,0,0"/>                  <Border BorderBrush="Black"  BorderThickness="1" Margin="15">     <StackPanel x:Name="AddressGrid">         <TextBlock Text="Location: " Style="{StaticResource TextBlockPrompt}" />       <TextBox x:Name="Location" Style="{StaticResource TextBoxStyle}" Text ="{Binding Location, Mode=TwoWay }" />          <TextBlock Text="Address Line 1: " Style="{StaticResource TextBlockPrompt}" />         <TextBox x:Name="Address1" Style="{StaticResource TextBoxStyle}" Text ="{Binding Address1, Mode=TwoWay }" />         <TextBlock Text="Address Line 2: " Style="{StaticResource TextBlockPrompt}" />         <TextBox x:Name="Address2" Style="{StaticResource TextBoxStyle}" Text ="{Binding Address2, Mode=TwoWay }"/>         <TextBlock Text="City, State, Zip " Style="{StaticResource TextBlockPrompt}" />         <TextBox x:Name="City" Style="{StaticResource TextBoxStyle}" Text ="{Binding City, Mode=TwoWay }"/>       </StackPanel>     </Border>          </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; namespace SilverlightApplication3 {     public class Address : INotifyPropertyChanged     {         private string location;         private string address1;         private string address2;         private string city;         public event PropertyChangedEventHandler PropertyChanged;         public string Location         {             get { return location; }             set             {                 location = value;                 NotifyPropertyChanged("Location");             }         }             public string Address1         {             get { return address1; }             set             {                 address1 = value;                 NotifyPropertyChanged("Address1");             }         }         public string Address2         {             get { return address2; }             set             {                 address2 = value;                 NotifyPropertyChanged("Address2");             }         }         public string City         {             get { return city; }             set             {                 city = value;                 NotifyPropertyChanged("City");             }         }         public void NotifyPropertyChanged(string propertyName)         {             if (PropertyChanged != null)             {                 PropertyChanged(this,                     new PropertyChangedEventArgs(propertyName));             }         }     }     public partial class MainPage : UserControl     {         private Address theAddress;         public MainPage()         {             InitializeComponent();             theAddress = new Address();             Loaded += new RoutedEventHandler(Page_Loaded);         }         void Page_Loaded(object sender, RoutedEventArgs e)         {             AddressGrid.KeyDown += new KeyEventHandler(AddressGrid_KeyDown);         }         void AddressGrid_KeyDown(object sender, KeyEventArgs e)         {             if (e.Key == Key.C && Keyboard.Modifiers == ModifierKeys.Control)             {                 theAddress.Location = "address";                 theAddress.Address1 = "Boston!";                 theAddress.Address2 = "1 Blvd";                 theAddress.City = "CA";             }             if (e.Key == Key.M && Keyboard.Modifiers == ModifierKeys.Control)             {                 theAddress.Location = "B";                 theAddress.Address1 = "Way";                 theAddress.Address2 = "Building 10";                 theAddress.City = "WA";             }             this.DataContext = theAddress;         }     } }