using Common.StartupHelpers; using CommunityToolkit.Mvvm.ComponentModel; using System.Collections.ObjectModel; namespace MultiTerm.Core.ViewModel; public partial class ShellViewModel : ObservableObject { private readonly IAbstractFactory sendReceiveViewModelFactory; [ObservableProperty] private string title = "ShellView Test"; [ObservableProperty] private ObservableCollection terminalViewModels = new(); [ObservableProperty] private ITerminalViewModel? selectedTerminalViewModel; public ShellViewModel(IAbstractFactory sendReceiveViewModelFactory) { this.sendReceiveViewModelFactory = sendReceiveViewModelFactory; // create a new terminal this.AppendTerminal(this.sendReceiveViewModelFactory.Create()); } public void AppendTerminal(ITerminalViewModel newTerminal) { // guard null value if(newTerminal == null) { return; } // add to collection and set as selected this.TerminalViewModels.Add(newTerminal); this.SelectedTerminalViewModel = newTerminal; } }