@@ -176,13 +176,15 @@ public MainPageViewModel()
176176 {
177177 if ( Terminals . IsEmpty ( ) )
178178 IsTerminalViewOpen = true ;
179- Terminals . Add ( new TerminalView ( e ?? TerminalSelectedProfile )
179+ var termId = Guid . NewGuid ( ) . ToString ( ) ;
180+ Terminals . Add ( new TerminalModel ( )
180181 {
181- Tag = $ "Terminal { Terminals . Count } "
182+ Name = ( e ?? TerminalSelectedProfile ) . Name ,
183+ Id = termId ,
184+ Control = new TerminalView ( e ?? TerminalSelectedProfile , termId )
182185 } ) ;
183186 OnPropertyChanged ( nameof ( SelectedTerminal ) ) ;
184187 OnPropertyChanged ( nameof ( ActiveTerminal ) ) ;
185- OnPropertyChanged ( nameof ( TerminalNames ) ) ;
186188 } ) ;
187189 TerminalToggleCommand = new RelayCommand ( ( ) =>
188190 {
@@ -204,14 +206,13 @@ public MainPageViewModel()
204206 } ) ;
205207 TerminalCloseCommand = new RelayCommand < string > ( ( name ) =>
206208 {
207- var terminal = Terminals . First ( x => x . Tag . ToString ( ) == name ) ;
208- ( terminal as IDisposable ) ? . Dispose ( ) ;
209+ var terminal = Terminals . First ( x => x . Id == name ) ;
210+ terminal . Dispose ( ) ;
209211 Terminals . Remove ( terminal ) ;
210212 SelectedTerminal = int . Min ( SelectedTerminal , Terminals . Count - 1 ) ;
211213 if ( Terminals . IsEmpty ( ) )
212214 IsTerminalViewOpen = false ;
213215 OnPropertyChanged ( nameof ( ActiveTerminal ) ) ;
214- OnPropertyChanged ( nameof ( TerminalNames ) ) ;
215216 } ) ;
216217 TerminalSelectedProfile = TerminalProfiles [ 0 ] ;
217218
@@ -475,10 +476,9 @@ public bool IsTerminalViewOpen
475476 set => SetProperty ( ref _isTerminalViewOpen , value ) ;
476477 }
477478
478- public Control ? ActiveTerminal => SelectedTerminal >= 0 && SelectedTerminal < Terminals . Count ? Terminals [ SelectedTerminal ] : null ;
479+ public Control ? ActiveTerminal => SelectedTerminal >= 0 && SelectedTerminal < Terminals . Count ? Terminals [ SelectedTerminal ] . Control : null ;
479480
480- public List < Control > Terminals { get ; } = new ( ) ;
481- public List < string > TerminalNames => Terminals . Select ( x => x . Tag . ToString ( ) ! ) . ToList ( ) ;
481+ public ObservableCollection < TerminalModel > Terminals { get ; } = new ( ) ;
482482
483483 private int _selectedTerminal ;
484484 public int SelectedTerminal
0 commit comments