MarkupExtensions.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Avalonia.Data.Core;
  2. using Projektanker.Icons.Avalonia;
  3. using Ryujinx.Ava.Common.Locale;
  4. namespace Ryujinx.Ava.Common.Markup
  5. {
  6. internal class IconExtension(string iconString) : BasicMarkupExtension
  7. {
  8. protected override ClrPropertyInfo PropertyInfo
  9. => new(
  10. "Item",
  11. _ => new Icon { Value = iconString },
  12. null,
  13. typeof(Icon)
  14. );
  15. }
  16. internal class SpinningIconExtension(string iconString) : BasicMarkupExtension
  17. {
  18. protected override ClrPropertyInfo PropertyInfo
  19. => new(
  20. "Item",
  21. _ => new Icon { Value = iconString, Animation = IconAnimation.Spin },
  22. null,
  23. typeof(Icon)
  24. );
  25. }
  26. internal class LocaleExtension(LocaleKeys key) : BasicMarkupExtension
  27. {
  28. protected override ClrPropertyInfo PropertyInfo
  29. => new(
  30. "Item",
  31. _ => LocaleManager.Instance[key],
  32. null,
  33. typeof(string)
  34. );
  35. }
  36. }