using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using StrixMusic.Sdk.ViewModels; using StrixMusic.Shells.Groove.Messages.Navigation.Pages; namespace StrixMusic.Shells.Groove.ViewModels.Collections { /// /// A ViewModel for a . /// public class GroovePlaylistCollectionViewModel : ObservableObject { private IPlaylistCollectionViewModel? _playlistCollectionViewModel; private PlaylistViewModel? _selectedPlaylist; /// /// Initializes a new instance of the class. /// public GroovePlaylistCollectionViewModel() { NavigateToPlaylistCommand = new RelayCommand(NavigateToPlaylist); } /// /// The to display. /// public IPlaylistCollectionViewModel? PlaylistCollection { get => _playlistCollectionViewModel; set => SetProperty(ref _playlistCollectionViewModel, value, nameof(PlaylistCollection)); } /// /// Gets or sets the selected playlist /// public PlaylistViewModel SelectedPlaylist { get => _selectedPlaylist!; set => SetProperty(ref _selectedPlaylist, value); } /// /// A Command that requests a navigation to a playlist page. /// public RelayCommand NavigateToPlaylistCommand { get; private set; } private void NavigateToPlaylist(PlaylistViewModel? viewModel) { if (viewModel != null) WeakReferenceMessenger.Default.Send(new PlaylistViewNavigationRequestMessage(viewModel)); } } }