Master Detail Binding : Binding « Windows Presentation Foundation « VB.Net






Master Detail Binding

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.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

   
    
    
    
    
  








Related examples in the same category

1.Bind to a Property of a UI ElementBind to a Property of a UI Element
2.Bind a Property of an Element to ItselfBind a Property of an Element to Itself
3.Specify a Default Value for a BindingSpecify a Default Value for a Binding
4.Create a Two-Way BindingCreate a Two-Way Binding
5.Debug Bindings Using Attached PropertiesDebug Bindings Using Attached Properties
6.String Array ResourceString Array Resource
7.Bind animate target value to Canvas(Window) widthBind animate target value to Canvas(Window) width
8.Display Current Date and Time: binding the DateTime.Now to LabelDisplay Current Date and Time: binding the DateTime.Now to Label
9.One way and two way bindingOne way and two way binding
10.Custom Element Binding WindowCustom Element Binding Window
11.Get XmlElement from Bounded viewGet XmlElement from Bounded view
12.Customize UpdateSourceExceptionFilterCustomize UpdateSourceExceptionFilter
13.Assign your own class to DataContent and bind to TextBoxAssign your own class to DataContent and bind to TextBox
14.Async bindingAsync binding
15.Null property bindingNull property binding
16.Binding Property with ExceptionBinding Property with Exception
17.Hierarchical Binding for three level nested objectsHierarchical Binding for three level nested objects
18.BindingOperations.GetBindingExpressionBindingOperations.GetBindingExpression
19.Bind to enum typesBind to enum types
20.Bind to a MethodBind to a Method
21.Manual Update TargetManual Update Target
22.Bind to the Values of an EnumerationBind to the Values of an Enumeration
23.Data binding using collections composed of mixed types of data.Data binding using collections composed of mixed types of data.
24.Binding Environment InfoBinding Environment Info
25.Bind to an ADO.NETDataSetBind to an ADO.NETDataSet
26.Text Data BindingText Data Binding
27.Bind to an Existing Object InstanceBind to an Existing Object Instance
28.Digital ClockDigital Clock
29.Use Data Triggers to Change the Appearance of Bound DataUse Data Triggers to Change the Appearance of Bound Data