/
bomjkee
/
AvaloniaEntityApp
Обзор
Документация
Войти
/
bomjkee
/
AvaloniaEntityApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ViewModels/GenreViewModel.cs
93 строки
2 KB
bomjkee
first commit
23 фев 2025, 00:18
23 фев 2025, 00:18
e1949b1
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Avalonia.Threading; using AvaloniaApp.Services; using AvaloniaApp.Models; namespace AvaloniaApp.ViewModels; public partial class GenreViewModel : ViewModelBase { private readonly LibraryDataService _libraryData; [ObservableProperty] private ObservableCollection<Genre> _genres = new ObservableCollection<Genre>(); [ObservableProperty] private Genre? _selectedGenre; [ObservableProperty] private string _name = string.Empty; [ObservableProperty] private string? _description = string.Empty; public GenreViewModel(LibraryDataService libraryData) { _libraryData = libraryData; _libraryData.Genres.CollectionChanged += (s, e) => UpdateGenres(); } private void UpdateGenres() { Genres = new ObservableCollection<Genre>(_libraryData.Genres); } [RelayCommand] private async Task AddGenreAsync() { if (string.IsNullOrEmpty(Name) || SelectedGenre?.Name == Name) return; var genre = new Genre { Name = Name, Description = Description }; await _libraryData.AddGenreAsync(genre); ClearInput(); } [RelayCommand] private async Task UpdateGenreAsync() { if (SelectedGenre == null || string.IsNullOrEmpty(Name)) return; SelectedGenre.Name = Name; SelectedGenre.Description = Description; await _libraryData.UpdateGenreAsync(SelectedGenre); ClearInput(); } [RelayCommand] private async Task DeleteGenreAsync() { if (SelectedGenre == null) return; await _libraryData.DeleteGenreAsync(SelectedGenre); ClearInput(); } [RelayCommand] private void ClearInput() { Name = string.Empty; Description = string.Empty; SelectedGenre = null; } partial void OnSelectedGenreChanged(Genre? value) { if (value != null) { Name = value.Name; Description = value.Description; } } }