using Microsoft.UI.Xaml.Automation; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Media.Imaging; namespace XFEEDToolBox.Controls; public sealed class MaterialGradeIcon : UserControl { public static readonly DependencyProperty GradeProperty=DependencyProperty.Register(nameof(Grade),typeof(int),typeof(MaterialGradeIcon),new PropertyMetadata(0,Changed)); public int Grade{get=>(int)GetValue(GradeProperty);set=>SetValue(GradeProperty,value);} private readonly Image icon=new(){Stretch=Stretch.Uniform}; public MaterialGradeIcon(){Width=32;Height=28;Content=icon;} private static void Changed(DependencyObject obj,DependencyPropertyChangedEventArgs args)=>((MaterialGradeIcon)obj).Update(); private void Update() { icon.Source=Grade is >=1 and <=5?new BitmapImage(new Uri($"ms-appx:///Assets/Materials/Grades/grade-{Grade}.png")):null; var label=Grade is >=1 and <=5?$"G{Grade}":"等级未记录"; ToolTipService.SetToolTip(this,label);AutomationProperties.SetName(this,label); } }