using CommunityToolkit.Mvvm.ComponentModel; using GazpromApp.Messages; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using System.Collections.ObjectModel; using System.Threading.Tasks; using GazpromApp.Models; namespace GazpromApp.ViewModels; public partial class MainWindowViewModel : ViewModelBase { public ObservableCollection Points { get; } = []; [RelayCommand] private async Task AddPoint() { PointViewModel? point = await WeakReferenceMessenger.Default.Send(new NewPointMessage()); if (point != null) Points.Add(point); IsLineVisible = Points.Count > 0; } [RelayCommand] private async Task EditPoint(PointViewModel point) { PointViewModel p = await WeakReferenceMessenger.Default.Send(new EditPointMessage(point)) ?? point; Points[Points.IndexOf(point)] = p; } [RelayCommand] private void RemovePoint(PointViewModel point) { Points.Remove(point); IsLineVisible = Points.Count > 0; } // Visual properties [ObservableProperty] private bool _isLineVisible; }