using Avalonia.Controls; using LehrerApp.Desktop.ViewModels.Groups; using Microsoft.Extensions.DependencyInjection; namespace LehrerApp.Desktop.Views.Groups; public partial class GroupListView : UserControl { public GroupListView() => InitializeComponent(); protected override void OnDataContextChanged(EventArgs e) { base.OnDataContextChanged(e); if (DataContext is GroupListViewModel vm) { vm.OnAddGroup = ShowAddGroupDialog; vm.OnEditGroup = ShowEditGroupDialog; vm.OnConfirmDelete = ShowDeleteGroupDialog; } } private async Task ShowAddGroupDialog() { var dialogVm = App.Services.GetRequiredService(); var dialog = new AddGroupDialog { DataContext = dialogVm }; var owner = TopLevel.GetTopLevel(this) as Window; if (owner is not null) await dialog.ShowDialog(owner); } private async Task ShowEditGroupDialog(Guid groupId) { var group = App.Services.GetRequiredService() .GetById(groupId); if (group is null) return; var dialogVm = App.Services.GetRequiredService(); dialogVm.LoadForEdit(group); var dialog = new AddGroupDialog { DataContext = dialogVm }; var owner = TopLevel.GetTopLevel(this) as Window; if (owner is not null) await dialog.ShowDialog(owner); } private async Task ShowDeleteGroupDialog(GroupListItem group) { var dialog = new DeleteGroupDialog { DataContext = group.DisplayName }; var owner = TopLevel.GetTopLevel(this) as Window; return owner is not null && await dialog.ShowDialog(owner); } }