Files
csharp-uebung/FahzeugWPF/MainWindowViewModel.cs
2025-06-02 16:36:48 +02:00

74 lines
1.9 KiB
C#

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<string>(ref _mainWindowTitle, value);
}
}
public ObservableCollection<Fahrzeug> Fahrzeuge { get; } = new ObservableCollection<Fahrzeug>();
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();
});
});
}
}