Mega Code Archive

 
Categories / C# / WPF
 

Master Detail Binding

<Window x:Class="WpfApplication1.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="MasterDetailBinding"     xmlns:local="clr-namespace:WpfApplication1">   <Window.Resources>     <local:Companies x:Key="Companies">       <local:Company CompanyName="Stooge">         <local:Company.Members>           <local:Team>             <local:Employee Name="Larry" Age="21">               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="A" />                   <local:Skill Description="B" />                   <local:Skill Description="C" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>             <local:Employee Name="Moe" Age="22" >               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="D" />                   <local:Skill Description="E" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>             <local:Employee Name="Curly" Age="23" >               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="F" />                   <local:Skill Description="G" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>           </local:Team>         </local:Company.Members>       </local:Company>       <local:Company CompanyName="Addams">         <local:Company.Members>           <local:Team>             <local:Employee Name="Gomez" Age="135" >               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="H" />                   <local:Skill Description="Z" />                   <local:Skill Description="Q" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>             <local:Employee Name="Morticia" Age="121" >               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="R" />                   <local:Skill Description="P" />                   <local:Skill Description="L" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>             <local:Employee Name="Fester" Age="137" >               <local:Employee.Skills>                 <local:Skills>                   <local:Skill Description="R" />                   <local:Skill Description="S" />                   <local:Skill Description="U" />                 </local:Skills>               </local:Employee.Skills>             </local:Employee>           </local:Team>         </local:Company.Members>       </local:Company>     </local:Companies>   </Window.Resources>   <Grid DataContext="{StaticResource Companies}">     <Grid.RowDefinitions>       <RowDefinition Height="Auto" />       <RowDefinition />     </Grid.RowDefinitions>     <Grid.ColumnDefinitions>       <ColumnDefinition />       <ColumnDefinition />       <ColumnDefinition />     </Grid.ColumnDefinitions>     <TextBlock Grid.Row="0" Grid.Column="0">Companies:</TextBlock>     <ListBox Grid.Row="1" Grid.Column="0" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True">       <ListBox.ItemTemplate>         <DataTemplate>           <TextBlock Text="{Binding Path=CompanyName}" />         </DataTemplate>       </ListBox.ItemTemplate>     </ListBox>     <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">       <TextBlock Text="{Binding Path=CompanyName}" />       <TextBlock Text=" Company Members:" />     </StackPanel>     <ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Path=Members}" IsSynchronizedWithCurrentItem="True">       <ListBox.ItemTemplate>         <DataTemplate>           <TextBlock>             <TextBlock Text="{Binding Path=Name}" />             (age: <TextBlock Text="{Binding Path=Age}" />)           </TextBlock>         </DataTemplate>       </ListBox.ItemTemplate>     </ListBox>     <StackPanel Grid.Row="0" Grid.Column="2" Orientation="Horizontal">       <TextBlock Text="{Binding Path=Members/Name}" />       <TextBlock Text=" Skills:" />     </StackPanel>     <ListBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding Path=Members/Skills}" IsSynchronizedWithCurrentItem="True">       <ListBox.ItemTemplate>         <DataTemplate>           <TextBlock Text="{Binding Path=Description}" />         </DataTemplate>       </ListBox.ItemTemplate>     </ListBox>   </Grid> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Shapes; using System.Collections.ObjectModel; namespace WpfApplication1 {   public class Skill {     string description;     public string Description {       get { return description; }       set { description = value; }     }   }   public class Skills : ObservableCollection<Skill> { }   public class Employee {     string name;     public string Name {       get { return name; }       set { name = value; }     }     int age;     public int Age {       get { return age; }       set { age = value; }     }     Skills traits;     public Skills Skills {       get { return traits; }       set { traits = value; }     }   }   public class Team : ObservableCollection<Employee> { }   public class Company {     string familyName;     public string CompanyName {       get { return familyName; }       set { familyName = value; }     }     Team members;     public Team Members {       get { return members; }       set { members = value; }     }   }   public class Companies : ObservableCollection<Company> { }   public partial class Window1 : Window {     public Window1() {       InitializeComponent();     }   } }