namespace MauiTodo; public partial class MainPage : ContentPage { private readonly TodoDatabase database = new(); private TodoTask? selectedTask; public MainPage() => InitializeComponent(); protected override async void OnAppearing() { base.OnAppearing(); await RefreshAsync(); } private async Task RefreshAsync() { TasksView.ItemsSource = await database.GetAllAsync(); } private async void OnAddClicked(object sender, EventArgs e) { string title = TaskEntry.Text?.Trim() ?? ""; if (title.Length == 0) { await DisplayAlertAsync("Validation", "Enter a task title.", "OK"); return; } await database.AddAsync(title); TaskEntry.Text = ""; await RefreshAsync(); } private void OnTaskSelectionChanged(object sender, SelectionChangedEventArgs e) { selectedTask = e.CurrentSelection.FirstOrDefault() as TodoTask; } private async void OnRemoveClicked(object sender, EventArgs e) { if (selectedTask is null) { await DisplayAlertAsync("Select a task", "Tap a task first.", "OK"); return; } await database.DeleteAsync(selectedTask); selectedTask = null; TasksView.SelectedItem = null; await RefreshAsync(); } }