Imports System.Collections.ObjectModel Imports System.ComponentModel Imports System.IO Public Class Project Implements INotifyPropertyChanged Private m_Name As String Public Property Name As String Get Return m_Name End Get Set(value As String) m_Name = value NotifyPropertyChanged("Name") End Set End Property Private m_AssemblyList As New ObservableCollection(Of AssemblyName) Public Property AssemblyList As ObservableCollection(Of AssemblyName) Get Return m_AssemblyList End Get Set(value As ObservableCollection(Of AssemblyName)) m_AssemblyList = value End Set End Property Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Sub NotifyPropertyChanged(propName As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName)) End Sub End Class Public Class AssemblyName Implements INotifyPropertyChanged Private m_Name As String Public Property Name As String Get Return m_Name End Get Set(value As String) m_Name = value m_GraphicName = Path.GetFileNameWithoutExtension(m_Name) End Set End Property Private m_IsModify As Boolean Public Property IsModify As Boolean Get Return m_IsModify End Get Set(value As Boolean) m_IsModify = value If m_IsModify Then If Not m_GraphicName.Contains("*") Then m_GraphicName &= "*" Else m_GraphicName = Path.GetFileNameWithoutExtension(m_Name) End If NotifyPropertyChanged("GraphicName") End Set End Property Private m_GraphicName As String Public Property GraphicName As String Get Return m_GraphicName End Get Set(value As String) m_GraphicName = value End Set End Property Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Sub NotifyPropertyChanged(propName As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName)) End Sub End Class