IconKindConverter.cs 1.2 KB

1234567891011121314151617181920212223242526272829
  1. using System;
  2. using System.Globalization;
  3. using System.Windows.Data;
  4. using MahApps.Metro.IconPacks;
  5. namespace TeamAAS
  6. {
  7. /// <summary>
  8. /// 图标 Kind 名(如 "Camera" / "Cog")→ <see cref="PackIconMaterialKind"/>,供 PackIconMaterial.Kind 绑定用。
  9. /// 为空或无法识别(含遗留的 SVG 路径串)时回退 CircleOutline,保证不崩、不空白。
  10. /// </summary>
  11. public sealed class IconKindConverter : IValueConverter
  12. {
  13. /// <summary>把 Kind 名解析为枚举;为空/无法识别(含遗留 SVG 路径)回退 CircleOutline。供 code-behind 复用。</summary>
  14. public static PackIconMaterialKind ToKind(string name)
  15. {
  16. if (!string.IsNullOrWhiteSpace(name) &&
  17. Enum.TryParse(name.Trim(), ignoreCase: true, out PackIconMaterialKind kind))
  18. return kind;
  19. return PackIconMaterialKind.CircleOutline;
  20. }
  21. public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  22. => ToKind(value as string);
  23. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  24. => throw new NotSupportedException();
  25. }
  26. }