Commands auf Async umgestellt

This commit is contained in:
HuskyTeufel
2021-09-15 19:12:31 +02:00
parent 00718f9821
commit e0c9839275
13 changed files with 242 additions and 90 deletions

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public abstract class AsyncCommandBase : ICommand
{
bool _isExecuting = false;
public event EventHandler? CanExecuteChanged;
public bool IsExecuting
{
get => _isExecuting;
set
{
_isExecuting = value;
CanExecuteChanged?.Invoke(this, new EventArgs());
}
}
public bool CanExecute(object? parameter)
{
return !IsExecuting;
}
public async void Execute(object? parameter)
{
IsExecuting = true;
await ExecuteAsync(parameter);
IsExecuting = false;
}
public abstract Task ExecuteAsync(object? parameter);
}
}

View File

@@ -11,16 +11,14 @@ using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public class EditClientCommand : ICommand
public class EditClientCommand : AsyncCommandBase
{
private readonly IDataService<Client> dataservice;
private readonly IActualProject actualProject;
private readonly IRenavigator renavigator;
private readonly ClientListViewModel clientListViewModel;
public event EventHandler? CanExecuteChanged;
public EditClientCommand(IDataService<Client> dataservice, IActualProject actualProject,IRenavigator renavigator, ClientListViewModel clientListViewModel)
{
@@ -30,12 +28,8 @@ namespace DaSaSo.ViewModel.Commands
this.clientListViewModel = clientListViewModel;
}
public bool CanExecute(object? parameter)
{
return true;
}
public void Execute(object? parameter)
public override async Task ExecuteAsync(object? parameter)
{
actualProject.SetClient(clientListViewModel.SelectedClient);
renavigator.Renavigate(new ClientEditViewModel(dataservice,actualProject,renavigator));

View File

@@ -8,9 +8,9 @@ using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public class SelectClientCommand : ICommand
public class SelectClientCommand : AsyncCommandBase
{
public event EventHandler? CanExecuteChanged;
private readonly IActualProject _actualProject;
private readonly ClientListViewModel _clientListViewModel;
public SelectClientCommand(IActualProject actualProject, ClientListViewModel clientListViewModel)
@@ -19,15 +19,11 @@ namespace DaSaSo.ViewModel.Commands
_clientListViewModel = clientListViewModel;
}
public bool CanExecute(object? parameter)
{
return true;
}
public void Execute(object? parameter)
public override async Task ExecuteAsync(object? parameter)
{
var s = _clientListViewModel.SelectedClient;
_actualProject.SetClient(s);
}
}
}

View File

@@ -4,9 +4,8 @@ using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
class UpdateCurrentViewModelCommand : ICommand
class UpdateCurrentViewModelCommand : AsyncCommandBase
{
public event EventHandler? CanExecuteChanged;
private INavigator _navigator;
private readonly IViewModelAbstractFactory _viewModelFactory;
@@ -16,12 +15,9 @@ namespace DaSaSo.ViewModel.Commands
_viewModelFactory = viewModelFactory;
}
public bool CanExecute(object? parameter)
{
return true;
}
public void Execute(object? parameter)
public override async Task ExecuteAsync(object? parameter)
{
if(parameter is EViewType)
{

View File

@@ -20,15 +20,15 @@ namespace DaSaSo.ViewModel.Factories
public ViewModelAbstractFactory(
CreateViewModel<HomeViewModel> createHomeViewModel,
CreateViewModel<ClientListViewModel> createClientListViewModel/*,
CreateViewModel<ClientListViewModel> createClientListViewModel,
CreateViewModel<ClientEditViewModel> createClientEditViewModel,
CreateViewModel<ProjectListViewModel> createProjektListViewModel*/
CreateViewModel<ProjectListViewModel> createProjektListViewModel
)
{
_createHomeViewModel = createHomeViewModel;
_createClientListViewModel = createClientListViewModel;
/*_createClientEditViewModel = createClientEditViewModel;
_createProjektListViewModel = createProjektListViewModel;*/
_createClientEditViewModel = createClientEditViewModel;
_createProjektListViewModel = createProjektListViewModel;
}
public BaseViewModel CreateViewModel(EViewType viewType)
@@ -50,7 +50,7 @@ namespace DaSaSo.ViewModel.Factories
break;
*/
default:
throw new ArgumentException("The Viewtype dos not have a ViewModel.", "viewType");
throw new ArgumentException("The Viewtype does not have a ViewModel.", "viewType");
}
}
}

View File

@@ -1,9 +1,11 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -12,25 +14,27 @@ namespace DaSaSo.ViewModel
{
public class ProjectListViewModel : BaseViewModel
{
private GenericDataService<Project> genericDataService;
private ProjectDataService genericDataService;
private IActualProject actualProject;
private IRenavigator renavigator;
public ObservableCollection<Project> Projekte { get; }
public ProjectListViewModel(GenericDataService<Project> genericDataService, IActualProject actualProject, IRenavigator renavigator)
public ProjectListViewModel(IDataService<Project> genericDataService, IActualProject actualProject, IRenavigator renavigator)
{
Projekte = new ObservableCollection<Project>();
this.genericDataService = genericDataService;
this.genericDataService = (genericDataService as ProjectDataService);
this.actualProject = actualProject;
this.renavigator = renavigator;
LoadProjecte();
}
public async void LoadProjecte()
{
var projekte = await genericDataService.GetAll();
var projekte = await genericDataService.GetAllByClient(actualProject.AktuellClient);
//
InitCollection(Projekte, projekte);

View File

@@ -23,6 +23,9 @@ namespace DaSaSo.ViewModel
private string _clientname = "";
private string _projektname = "";
private string _buildingsitename = "";
public bool CanSelectProject { get => _actualProject.AktuellClient != null; }
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
public INavigator Navigator { get; set; }
public ICommand UpdateCurrentViewModelCommand { get; }
@@ -80,16 +83,19 @@ namespace DaSaSo.ViewModel
private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e)
{
Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber;
OnPropertyChanged(nameof(CanSelectSewerObjects));
}
private void _actualProject_ProjectChanged(object? sender, EventArgs e)
{
Projektname = _actualProject.AktuellProjekt.Name;
OnPropertyChanged(nameof(CanSelectBuildingSite));
}
private void _actualProject_ClientChanged(object? sender, EventArgs e)
{
ClientName = _actualProject.AktuellClient.Firstname;
OnPropertyChanged(nameof(CanSelectProject));
}
}
}