using StrixMusic.Sdk.ViewModels; using StrixMusic.Sdk.WinUI.Controls.Items.Abstract; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace StrixMusic.Sdk.WinUI.Controls.Items { /// /// A Templated for displaying an in a list. /// public partial class AlbumItem : ItemControl { /// /// Initializes a new instance of the class. /// public AlbumItem() { this.DefaultStyleKey = typeof(AlbumItem); AttachEvents(); } private void AttachEvents() { Loaded += AlbumItem_Loaded; Unloaded += AlbumItem_Unloaded; } private void DetachEvents() { Unloaded -= AlbumItem_Unloaded; } /// /// ViewModel holding the data for /// public AlbumViewModel Album { get { return (AlbumViewModel)GetValue(AlbumProperty); } set { SetValue(AlbumProperty, value); } } /// /// Dependency property for . /// // Using a DependencyProperty as the backing store for ViewModel. This enables animation, styling, binding, etc... public static readonly DependencyProperty AlbumProperty = DependencyProperty.Register(nameof(Album), typeof(AlbumViewModel), typeof(AlbumItem), new PropertyMetadata(0)); private void AlbumItem_Unloaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) { DetachEvents(); } private void AlbumItem_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) { Loaded -= AlbumItem_Loaded; } } }