Bind to ObservableCollection : ObservableCollection « Windows Presentation Foundation « VB.Net Tutorial

Home
VB.Net Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statements
5.Date Time
6.Class Module
7.Development
8.Collections
9.Generics
10.Attributes
11.Event
12.LINQ
13.Stream File
14.GUI
15.GUI Applications
16.Windows Presentation Foundation
17.2D Graphics
18.I18N Internationlization
19.Reflection
20.Regular Expressions
21.Security
22.Socket Network
23.Thread
24.Windows
25.XML
26.Database ADO.net
27.Design Patterns
VB.Net
VB.Net by API
VB.Net Tutorial » Windows Presentation Foundation » ObservableCollection 
16.104.1.Bind to ObservableCollection
<Window x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="HierarchicalBinding" xmlns:local="clr-namespace:WpfApplication1">
  <Window.Resources>
    <local:Companies x:Key="Companies">
      <local:Company CompanyName="CompanyA">
        <local:Company.Members>
          <local:People>
            <local:Employee Name="EmployeeA" Age="21">
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Comment1" />
                  <local:Comment Description="Comment2" />
                  <local:Comment Description="Comment3" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
            <local:Employee Name="Moe" Age="22" >
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Nice" />
                  <local:Comment Description="Comment3" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
            <local:Employee Name="Curly" Age="23" >
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Comment6" />
                  <local:Comment Description="Comment3" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
          </local:People>
        </local:Company.Members>
      </local:Company>
      <local:Company CompanyName="CompanyB">
        <local:Company.Members>
          <local:People>
            <local:Employee Name="EmployeeB" Age="135" >
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Rich" />
                  <local:Comment Description="Comment7" />
                  <local:Comment Description="Comment5" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
            <local:Employee Name="EmployeeC" Age="121" >
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Comment8" />
                  <local:Comment Description="Pale" />
                  <local:Comment Description="Comment4" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
            <local:Employee Name="EmployeeD" Age="137" >
              <local:Employee.Comments>
                <local:Comments>
                  <local:Comment Description="Comment8" />
                  <local:Comment Description="Comment6" />
                  <local:Comment Description="Comment3" />
                </local:Comments>
              </local:Employee.Comments>
            </local:Employee>
          </local:People>
        </local:Company.Members>
      </local:Company>
    </local:Companies>

    <HierarchicalDataTemplate DataType="{x:Type local:Company}"
      ItemsSource="{Binding Path=Members}">
      <TextBlock Text="{Binding Path=CompanyName}" />
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="{x:Type local:Employee}"
      ItemsSource="{Binding Path=Comments}">
      <TextBlock>
        <TextBlock Text="{Binding Path=Name}" />
        (age: <TextBlock Text="{Binding Path=Age}" />)
      </TextBlock>
    </HierarchicalDataTemplate>

    <DataTemplate DataType="{x:Type local:Comment}">
      <TextBlock Text="{Binding Path=Description}" />
    </DataTemplate>

  </Window.Resources>

  <TreeView DataContext="{StaticResource Companies}">
    <TreeViewItem ItemsSource="{Binding}" Header="Companies" />
  </TreeView>
</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 Comment
    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 Comments
    Inherits ObservableCollection(Of Comment)
  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 Comments
    Public Property Comments() As Comments
      Get
        Return traits
      End Get
      Set
        traits = value
      End Set
    End Property
  End Class

  Public Class People
    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 People
    Public Property Members() As People
      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
WPF Bind To Observable Collection
16.104.ObservableCollection
16.104.1.Bind to ObservableCollectionBind to ObservableCollection
16.104.2.Create Collection based Resource for data bindingCreate Collection based Resource for data binding
16.104.3.Use ObservableCollection as ResourceUse ObservableCollection as Resource
16.104.4.Bind to ObservableCollection and ItemsSourceBind to ObservableCollection and ItemsSource
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.