AllIconsViewModel.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using DryIoc;
  2. using Prism.Mvvm;
  3. using SKMC.UI.DesignApp.Models;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Collections.ObjectModel;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using System.Windows.Media;
  12. namespace SKMC.UI.DesignApp.ViewModels
  13. {
  14. public class AllIconsViewModel : BindableBase
  15. {
  16. public ObservableCollection<IconModel> Icons { get; set; } = new ObservableCollection<IconModel>();
  17. public AllIconsViewModel()
  18. {
  19. LoadAllIcons();
  20. }
  21. private void LoadAllIcons()
  22. {
  23. var resourceDict = Application.Current.Resources;
  24. var frameworkDictionaries = resourceDict.MergedDictionaries.FirstOrDefault(d => d.Source != null &&
  25. d.Source.OriginalString.Contains("/FrameWork.xaml"));
  26. var iconDictionaries = frameworkDictionaries.MergedDictionaries.FirstOrDefault(d => d.Source != null &&
  27. d.Source.OriginalString.Contains("/Assets/Icons.xaml"));
  28. foreach (var key in iconDictionaries.Keys)
  29. {
  30. var value = resourceDict[key];
  31. // 只取 GeometryGroup 或 PathGeometry 类型
  32. if (value is Geometry geometry && key is string stringKey)
  33. {
  34. Icons.Add(new IconModel { Key = stringKey, Data = geometry });
  35. }
  36. }
  37. }
  38. }
  39. }