SharedResourceDictionary.cs 944 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows;
  4. using HandyControl.Tools;
  5. namespace HandyControl.Themes;
  6. public class SharedResourceDictionary : ResourceDictionary
  7. {
  8. public static Dictionary<Uri, ResourceDictionary> SharedDictionaries = new();
  9. private Uri _sourceUri;
  10. public new Uri Source
  11. {
  12. get => DesignerHelper.IsInDesignMode ? base.Source : _sourceUri;
  13. set
  14. {
  15. if (value == null) return;
  16. if (DesignerHelper.IsInDesignMode)
  17. {
  18. base.Source = value;
  19. return;
  20. }
  21. _sourceUri = value;
  22. if (!SharedDictionaries.ContainsKey(value))
  23. {
  24. base.Source = value;
  25. SharedDictionaries.Add(value, this);
  26. }
  27. else
  28. {
  29. MergedDictionaries.Add(SharedDictionaries[value]);
  30. }
  31. }
  32. }
  33. }