88 lines
2.4 KiB
C#
88 lines
2.4 KiB
C#
using FahrzeugDatenBank;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
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);
|
|
this.Einfugen = new RelayCommand(EinfugenMachen);
|
|
}
|
|
|
|
public ICommand LoeschenKommando { get; private set; }
|
|
public ICommand LeerenKommando { get; private set; }
|
|
public ICommand Einfugen { 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();
|
|
});
|
|
});
|
|
}
|
|
|
|
private void EinfugenMachen(object? o)
|
|
{
|
|
var einfuege = App.ServiceProvider.GetService<EinfuegenWindow>();
|
|
einfuege.DataContext = App.ServiceProvider.GetService<EinfuegenModel>();
|
|
einfuege.ShowDialog();
|
|
|
|
LeereListe(o);
|
|
InitialisiereDasViewModell();
|
|
}
|
|
}
|