Imports System.ComponentModel Imports System.Collections.ObjectModel Imports EgtUILib Imports System.IO Public Class CompoPanelViewModel Implements INotifyPropertyChanged Private m_rfMainWindowViewModel As MainWindowViewModel Private m_rfDoorParametersViewModel As DoorParametersViewModel Private Shared m_CompoTypeList As New ObservableCollection(Of CompoType) Public Shared ReadOnly Property CompoTypeList As ObservableCollection(Of CompoType) Get Return m_CompoTypeList End Get End Property ' Definizione comando Private m_CmdCompoBtn As ICommand Sub New(MainWindowViewModel As MainWindowViewModel) m_rfMainWindowViewModel = MainWindowViewModel m_rfDoorParametersViewModel = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel) ' Lettura file ini per generare bottoni Dim Index As Integer = 1 Dim CompoName As String = String.Empty Dim CompoNameDDF As String = String.Empty ' Carico un vettore con il nome delle Path delle componenti Dim CompoArray() As String = Directory.GetDirectories("c:\EgtData\Doors\Compo") For Index = 0 To CompoArray.Count - 1 ' apro ogni directory e cerco un file di testo di nome Config.ini Dim CurrCompoPath As String = CompoArray(Index) & "\" & ConstCompo.CONFIGINI_FILE_NAME If File.Exists(CurrCompoPath) Then GetPrivateProfileCompoName(ConstCompo.S_COMPO, ConstCompo.K_NAME, CompoNameDDF, CompoName, CurrCompoPath) m_CompoTypeList.Add(New CompoType(CompoName, CompoNameDDF, CompoArray(Index))) End If Next End Sub #Region "COMMANDS" #Region "CompoBtnCommand" ''' ''' Returns a command that do Exec. ''' Public ReadOnly Property CompoBtnCommand As ICommand Get If m_CmdCompoBtn Is Nothing Then m_CmdCompoBtn = New Command(AddressOf CompoBtn) End If Return m_CmdCompoBtn End Get End Property ''' ''' Execute the Exec. This method is invoked by the ExecCommand. ''' Public Sub CompoBtn(param As Object) Dim CurrCompoType As CompoType = DirectCast(param, CompoType) m_rfDoorParametersViewModel.CurrDoor.AddNewCompo(CurrCompoType) End Sub #End Region ' CompoBtnCommand #End Region 'Commands Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Sub NotifyPropertyChanged(propName As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName)) End Sub End Class