XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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);
    }
}