Mega Code Archive

 
Categories / C# / WPF
 

Bounded to ComboBox

<Window x:Class="WpfApplication1.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   xmlns:local="clr-namespace:WpfApplication1"   Title="DisplayAndValueMemberBinding"   Height="300"   Width="300">   <Window.Resources>     <local:People x:Key="Family">       <local:Person Name="A" Age="11" />       <local:Person Name="B" Age="12" />       <local:Person Name="C" Age="38" />     </local:People>     <local:NamedAges x:Key="NamedAgeLookup">       <local:NamedAge NameForAge="zero" AgeId="0" />       <local:NamedAge NameForAge="one" AgeId="1" />       <local:NamedAge NameForAge="two" AgeId="2" />     </local:NamedAges>   </Window.Resources>   <StackPanel DataContext="{StaticResource Family}">     <ListBox Name="lb" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name" SelectedValuePath="Age" />     <TextBox Grid.Row="1" Text="{Binding Path=Name}" />     <ComboBox Grid.Row="2" ItemsSource="{Binding Source={StaticResource NamedAgeLookup}}" DisplayMemberPath="NameForAge" SelectedValuePath="AgeId" SelectedValue="{Binding Path=Age}" />       <Button Name="birthdayButton">Birthday</Button>       <Button Name="backButton">Back</Button>       <Button Name="forwardButton">Forward</Button>   </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Collections.ObjectModel; using System.ComponentModel; namespace WpfApplication1 {   public class Person : INotifyPropertyChanged {     public event PropertyChangedEventHandler PropertyChanged;     protected void Notify(string propName) {       if( this.PropertyChanged != null ) {         PropertyChanged(this, new PropertyChangedEventArgs(propName));       }     }     string name;     public string Name {       get { return this.name; }       set {         this.name = value;         Notify("Name");       }     }     int age;     public int Age {       get { return this.age; }       set {         this.age = value;         Notify("Age");       }     }   }   class People : ObservableCollection<Person> { }   public class NamedAge : INotifyPropertyChanged {     public event PropertyChangedEventHandler PropertyChanged;     protected void Notify(string propNameForAge) {       if( this.PropertyChanged != null ) {         PropertyChanged(this, new PropertyChangedEventArgs(propNameForAge));       }     }     string nameForAge;     public string NameForAge {       get { return this.nameForAge; }       set {         this.nameForAge = value;         Notify("NameForAge");       }     }     int ageId;     public int AgeId {       get { return this.ageId; }       set {         this.ageId = value;         Notify("AgeId");       }     }   }   class NamedAges : ObservableCollection<NamedAge> { }   public partial class Window1 : System.Windows.Window {     public Window1() {       InitializeComponent();       lb.MouseDoubleClick += lb_MouseDoubleClick;       this.birthdayButton.Click += birthdayButton_Click;       this.backButton.Click += backButton_Click;       this.forwardButton.Click += forwardButton_Click;     }     void lb_MouseDoubleClick(object sender, MouseButtonEventArgs e) {       int index = lb.SelectedIndex;       if( index < 0 ) { return; }       Person item = (Person)lb.SelectedItem;       int value = (int)lb.SelectedValue;       Console.WriteLine(index);       Console.WriteLine(item.Name);       Console.WriteLine(item.Age);       Console.WriteLine(value);     }     ICollectionView GetFamilyView() {       People people = (People)this.FindResource("Family");       return CollectionViewSource.GetDefaultView(people);     }     void birthdayButton_Click(object sender, RoutedEventArgs e) {       ICollectionView view = GetFamilyView();       Person person = (Person)view.CurrentItem;       ++person.Age;       Console.WriteLine(person.Name);       Console.WriteLine(person.Age);     }     void backButton_Click(object sender, RoutedEventArgs e) {       ICollectionView view = GetFamilyView();       view.MoveCurrentToPrevious();       if( view.IsCurrentBeforeFirst ) {         view.MoveCurrentToFirst();       }     }     void forwardButton_Click(object sender, RoutedEventArgs e) {       ICollectionView view = GetFamilyView();       view.MoveCurrentToNext();       if( view.IsCurrentAfterLast ) {         view.MoveCurrentToLast();       }     }   } }