using FahrzeugDatenBank; using System.Collections.ObjectModel; using System.Timers; using System.Windows; using System.Windows.Input; namespace FahzeugWPF; class MainWindowViewModel : ViewModelBase { private readonly FahrzeugeModell _model; private string _mainWindowTitle = "Fahrzeuge"; private System.Timers.Timer _timer = new System.Timers.Timer() { Interval = 1000, }; public MainWindowViewModel(FahrzeugeModell modell) { this._timer.Elapsed += _timer_Elapsed; this._timer.Start(); this._model = modell; this.InitialisiereDasViewModell(); this.LoeschenKommando = new RelayCommand(LoescheFahrzeug); this.LeerenKommando = new RelayCommand(LeereListe); } public ICommand LoeschenKommando { get; private set; } public ICommand LeerenKommando { get; private set; } public string MainWindowTitle { get { return _mainWindowTitle; } set { SetProperty(ref _mainWindowTitle, value); } } public ObservableCollection Fahrzeuge { get; } = new ObservableCollection(); private async void InitialisiereDasViewModell() { var fahrzeuge = await _model.LadeAlleFahrzeuge(); foreach (var fahrzeug in fahrzeuge) { this.Fahrzeuge.Add(fahrzeug); } } private void _timer_Elapsed(object? sender, ElapsedEventArgs e) { this.MainWindowTitle = $"Fahrzeuge {DateTime.Now.ToLongTimeString()}"; } private void LoescheFahrzeug(object? fahrzeug) { if (fahrzeug == null) return; _model.LoescheFahrzeug((Fahrzeug)fahrzeug); this.Fahrzeuge.Remove((Fahrzeug)fahrzeug); } private async void LeereListe(object? o) { await Task.Run(() => { Application.Current.Dispatcher.Invoke(() => { this.Fahrzeuge.Clear(); }); }); } }