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. /// [TemplatePart(Name = nameof(_rootGrid), Type = typeof(Grid))] public partial class ArtistItem : ItemControl { private Grid? _rootGrid; /// /// Initializes a new instance of the class. /// public ArtistItem() { this.DefaultStyleKey = typeof(ArtistItem); } /// protected override void OnApplyTemplate() { base.OnApplyTemplate(); // Find and set RootGrid _rootGrid = GetTemplateChild(nameof(_rootGrid)) as Grid; if (_rootGrid != null) { _rootGrid.PointerEntered += RootGrid_PointerEntered; _rootGrid.PointerExited += RootGrid_PointerExited; } } /// /// ViewModel holding the data for /// public ArtistViewModel Artist { get { return (ArtistViewModel)GetValue(ArtistProperty); } set { SetValue(ArtistProperty, value); } } /// /// Dependency property for . /// // Using a DependencyProperty as the backing store for ViewModel. This enables animation, styling, binding, etc... public static readonly DependencyProperty ArtistProperty = DependencyProperty.Register(nameof(Artist), typeof(ArtistViewModel), typeof(ArtistItem), new PropertyMetadata(0)); private void RootGrid_PointerExited(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e) { VisualStateManager.GoToState(this, "Normal", true); } private void RootGrid_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e) { VisualStateManager.GoToState(this, "PointerOver", true); } } }