using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace Tango.Touch.Components { /// /// The shared resource dictionary is a specialized resource dictionary /// that loads it content only once. If a second instance with the same source /// is created, it only merges the resources from the cache. /// public class SharedResourceDictionary : ResourceDictionary { /// /// Internal cache of loaded dictionaries /// public static Dictionary _sharedDictionaries = new Dictionary(); /// /// Local member of the source uri /// private Uri _sourceUri; /// /// Gets or sets the uniform resource identifier (URI) to load resources from. /// public new Uri Source { get { return _sourceUri; } set { _sourceUri = value; if (!_sharedDictionaries.ContainsKey(value)) { // If the dictionary is not yet loaded, load it by setting // the source of the base class base.Source = value; // add it to the cache _sharedDictionaries.Add(value, this); } else { // If the dictionary is already loaded, get it from the cache MergedDictionaries.Add(_sharedDictionaries[value]); } } } } }