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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Media.Imaging;
namespace XFEEDToolBox.Controls;
public sealed class MaterialIcon : UserControl
{
    public static readonly DependencyProperty CategoryProperty=DependencyProperty.Register(nameof(Category),typeof(string),typeof(MaterialIcon),new PropertyMetadata("",Changed));
    public string Category{get=>(string)GetValue(CategoryProperty);set=>SetValue(CategoryProperty,value);}
    private readonly Image icon=new(){Stretch=Stretch.Uniform};
    public MaterialIcon(){Width=32;Height=32;Content=icon;}
    private static void Changed(DependencyObject d,DependencyPropertyChangedEventArgs e)=>((MaterialIcon)d).Update();
    private void Update()
    {
        var category=Category.ToLowerInvariant();
        var name=category switch{"raw"=>"原始材料","manufactured"=>"制造材料","encoded"=>"编码数据",_=>"材料类别未记录"};
        icon.Source=category is "raw" or "manufactured" or "encoded"?new SvgImageSource(new Uri($"ms-appx:///Assets/Materials/Categories/{category}.svg")):null;
        ToolTipService.SetToolTip(this,name);Microsoft.UI.Xaml.Automation.AutomationProperties.SetName(this,name);
    }
}