In questo semplice esempio vedremo come utilizzare la Classe Multibinding   La classe MultiBinding consente di associare una proprietà di destinazione dell'associazione a un elenco di proprietà di origine e di applicare quindi una logica per produrre un valore con gli input specificati. In questo esempio viene mostrato come utilizzare la classe MultiBinding per visualizzare più proprietà della Classe Customer in una sola riga all'interno di un controllo ListBox.

Utilizzeremo una ObservableCollection    , la quale rappresenta una raccolta di dati dinamica che fornisce notifiche quando gli elementi vengono aggiunti, rimossi, o se l'elenco di tutto è aggiornato.

La implementeremo da codebheind andando ad implementare una classe chiamata Customer , composta a sua volta da 5 proprietà , ma vediamo il codice VB NET .

Imports System.Collections.ObjectModel
 
Class MainWindow
 
    Private Sub ButtonClick(sender As Object, e As RoutedEventArgs)
        ' Creiamo una ObservableCollection di tipo Customer
        ' andanDo a valorizzare le sue proprietà
        Dim customerList = New ObservableCollection(Of Customer)() From { _
            New Customer() With { _
                .Name = "Carmelo", _
                .Surname = "La Monica", _
                .Address = "Indirizzo", _
                .Email = "Email", _
                .PhoneNumber = "Telefono" _
            } _
        }
 
        ' Assegnamo alla proprietà ItemSource del controllo ListBox
        'il contenuto di customerlist
 
        listbox1.ItemsSource = customerList
    End Sub
 
    ' La classe Customer con le quattro proprietà
    Private Class Customer
        Public Property Name() As String
            Get
                Return _mName
            End Get
            Set(value As String)
                _mName = value
            End Set
        End Property
 
        Private _mName As String
 
        Public Property Surname() As String
            Get
                Return _mSurname
            End Get
            Set(value As String)
                _mSurname = value
            End Set
        End Property
 
        Private _mSurname As String
 
        Public Property PhoneNumber() As String
            Get
                Return _mPhoneNumber
            End Get
            Set(value As String)
                _mPhoneNumber = value
            End Set
        End Property
 
        Private _mPhoneNumber As String
 
        Public Property Address() As String
            Get
                Return _mAddress
            End Get
            Set(value As String)
                _mAddress = value
            End Set
        End Property
 
        Private _mAddress As String
 
        Public Property Email() As String
            Get
                Return _mEmail
            End Get
            Set(value As String)
                _mEmail = value
            End Set
        End Property
 
        Private _mEmail As String
    End Class
End Class


Definiamo un controllo ListBox e creiamo un ItemTemplate , al suo interno come e possibile notare abbiamo inserito un controllo TextBock ,quest'ultimo implementa il Multibinding in modo che possiamo definire quali proprietà vogliamo poi visualizzare ,esegue anche la formattazione della visualizzazione StringFormat="{}{0} {1}" in modo da visualizzare sulla stessa riga le proprietà Name e Surname della Classe Customer.
Eseguendo a runtime questo codice alla pressione del pulsante Button1 avremo questa situazione.

 

Ecco come verrà visualizzato all'interno del controllo ListBox un valore composto da due proprietà della Classe Customer , senza il multibinding avremo dovuto ricorrere ad altri sistemi, esempio definire una proprietà NomeCognome nella classe Customer ed andare a valorizzarla con il nome e cognome , poi assegnarla o in binding al controllo ListBox nello XAML , o valorizzarla da codebheind mediante la proprietà DisplayMemberPath.