1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
Imports System.ComponentModel
Imports System.Collections.ObjectModel
Public Class MaCommande
Implements INotifyPropertyChanged
Public Sub New()
Numero = String.Empty
Materiaux = New List(Of MonMateriau)
End Sub
Private m_Numero As String
Public Property Numero() As String
Get
Return m_Numero
End Get
Set(ByVal value As String)
m_Numero = value
OnPropChanged("Numero")
End Set
End Property
Private m_Materiaux As List(Of MonMateriau)
Public Property Materiaux() As List(Of MonMateriau)
Get
Return m_Materiaux
End Get
Set(ByVal value As List(Of MonMateriau))
m_Materiaux = value
OnPropChanged("Materiaux")
End Set
End Property
'--------------the overrides---------------------
Public Overrides Function ToString() As String
Dim s As String = ""
If Me.Materiaux.Count <> 0 Then
For i = 0 To Me.Materiaux.Count - 1
s = s + Me.Numero + "=>" + Me.Materiaux(i).ID + " , " + Me.Materiaux(i).Label + " ; " + vbCrLf
Next
End If
Return s
End Function
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private Sub OnPropChanged(ByVal NameProp As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(NameProp))
End Sub
End Class
Public Class ListCommands
Inherits ObservableCollection(Of MaCommande)
Private cmd As MaCommande
Private mat As MonMateriau
Private nbMat As Random = New Random
Private numMat As Random = New Random
Public Sub New()
For i As Integer = 1 To 5
cmd = New MaCommande
cmd.Numero = "cmd" + i.ToString
cmd.Materiaux = New List(Of MonMateriau)
For j As Integer = 1 To nbMat.Next(1, 8)
Dim n As Integer = numMat.Next(50, 100)
mat = New MonMateriau("mat" + n.ToString, "label" + n.ToString)
cmd.Materiaux.Add(mat)
Next
Me.Add(cmd)
Next
End Sub
End Class
Public Class MonMateriau
Implements INotifyPropertyChanged
Public Sub New(ByVal xid As String, ByVal xlbl As String)
ID = xid
Label = xlbl
End Sub
Private m_ID As String
Public Property ID() As String
Get
Return m_ID
End Get
Set(ByVal value As String)
m_ID = value
OnPropChanged("ID")
End Set
End Property
Private m_Label As String
Public Property Label() As String
Get
Return m_Label
End Get
Set(ByVal value As String)
m_Label = value
OnPropChanged("Label")
End Set
End Property
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private Sub OnPropChanged(ByVal NameProp As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(NameProp))
End Sub
End Class |