Mega Code Archive

 
Categories / VB.Net Tutorial / 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 />     </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.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Data Imports System.Windows.Documents Imports System.Windows.Media Imports System.Windows.Shapes Imports System.Collections.ObjectModel Namespace WpfApplication1   Public Class Skill     Private m_description As String     Public Property Description() As String       Get         Return m_description       End Get       Set         m_description = value       End Set     End Property   End Class   Public Class Skills     Inherits ObservableCollection(Of Skill)   End Class   Public Class Employee     Private m_name As String     Public Property Name() As String       Get         Return m_name       End Get       Set         m_name = value       End Set     End Property     Private m_age As Integer     Public Property Age() As Integer       Get         Return m_age       End Get       Set         m_age = value       End Set     End Property     Private traits As Skills     Public Property Skills() As Skills       Get         Return traits       End Get       Set         traits = value       End Set     End Property   End Class   Public Class Team     Inherits ObservableCollection(Of Employee)   End Class   Public Class Company     Private familyName As String     Public Property CompanyName() As String       Get         Return familyName       End Get       Set         familyName = value       End Set     End Property     Private m_members As Team     Public Property Members() As Team       Get         Return m_members       End Get       Set         m_members = value       End Set     End Property   End Class   Public Class Companies     Inherits ObservableCollection(Of Company)   End Class   Public Partial Class Window1     Inherits Window     Public Sub New()       InitializeComponent()     End Sub   End Class End Namespace