diff --git a/10.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs b/10.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs index a2399d031..60b89ff97 100644 --- a/10.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs +++ b/10.0/Apps/DeveloperBalance/PageModels/ProjectDetailPageModel.cs @@ -52,7 +52,19 @@ public partial class ProjectDetailPageModel : ObservableObject, IQueryAttributab new IconData { Icon = FluentUI.bot_24_regular, Description = "Bot Icon" } }; - public bool HasCompletedTasks + private bool _canDelete; + + public bool CanDelete + { + get => _canDelete; + set + { + _canDelete = value; + DeleteCommand.NotifyCanExecuteChanged(); + } + } + + public bool HasCompletedTasks => _project?.Tasks.Any(t => t.IsCompleted) ?? false; public ProjectDetailPageModel(ProjectRepository projectRepository, TaskRepository taskRepository, CategoryRepository categoryRepository, TagRepository tagRepository, ModalErrorHandler errorHandler) @@ -145,7 +157,8 @@ private async Task LoadData(int id) finally { IsBusy = false; - OnPropertyChanged(nameof(HasCompletedTasks)); + CanDelete = !_project.IsNullOrNew(); + OnPropertyChanged(nameof(HasCompletedTasks)); } } @@ -216,7 +229,7 @@ await Shell.Current.GoToAsync($"task", }); } - [RelayCommand] + [RelayCommand(CanExecute = nameof(CanDelete))] private async Task Delete() { if (_project.IsNullOrNew()) diff --git a/10.0/Apps/DeveloperBalance/Pages/ProjectDetailPage.xaml b/10.0/Apps/DeveloperBalance/Pages/ProjectDetailPage.xaml index 2000aad28..8c3c7d077 100644 --- a/10.0/Apps/DeveloperBalance/Pages/ProjectDetailPage.xaml +++ b/10.0/Apps/DeveloperBalance/Pages/ProjectDetailPage.xaml @@ -56,6 +56,7 @@ _canDelete; + set + { + _canDelete = value; + DeleteCommand.NotifyCanExecuteChanged(); + } + } + + public bool HasCompletedTasks => _project?.Tasks.Any(t => t.IsCompleted) ?? false; public ProjectDetailPageModel(ProjectRepository projectRepository, TaskRepository taskRepository, CategoryRepository categoryRepository, TagRepository tagRepository, ModalErrorHandler errorHandler) @@ -153,7 +165,8 @@ private async Task LoadData(int id) finally { IsBusy = false; - OnPropertyChanged(nameof(HasCompletedTasks)); + CanDelete = !_project.IsNullOrNew(); + OnPropertyChanged(nameof(HasCompletedTasks)); } } @@ -221,7 +234,7 @@ await Shell.Current.GoToAsync($"task", }); } - [RelayCommand] + [RelayCommand(CanExecute = nameof(CanDelete))] private async Task Delete() { if (_project.IsNullOrNew())