using DryIoc; using Prism.Mvvm; using SKMC.UI.DesignApp.Models; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace SKMC.UI.DesignApp.ViewModels { public class AllIconsViewModel : BindableBase { public ObservableCollection Icons { get; set; } = new ObservableCollection(); public AllIconsViewModel() { LoadAllIcons(); } private void LoadAllIcons() { var resourceDict = Application.Current.Resources; var frameworkDictionaries = resourceDict.MergedDictionaries.FirstOrDefault(d => d.Source != null && d.Source.OriginalString.Contains("/FrameWork.xaml")); var iconDictionaries = frameworkDictionaries.MergedDictionaries.FirstOrDefault(d => d.Source != null && d.Source.OriginalString.Contains("/Assets/Icons.xaml")); foreach (var key in iconDictionaries.Keys) { var value = resourceDict[key]; // 只取 GeometryGroup 或 PathGeometry 类型 if (value is Geometry geometry && key is string stringKey) { Icons.Add(new IconModel { Key = stringKey, Data = geometry }); } } } } }