//------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods /// <summary> /// Tries to find a Resource for the given resourceKey in the current /// element's ResourceDictionary. /// </summary> internal object FindResourceOnSelf(object resourceKey, bool allowDeferredResourceReference, bool mustReturnDeferredResourceReference) { ResourceDictionary resources = ResourcesField.GetValue(this); if ((resources != null) && resources.Contains(resourceKey)) { bool canCache; return(resources.FetchResource(resourceKey, allowDeferredResourceReference, mustReturnDeferredResourceReference, out canCache)); } return(DependencyProperty.UnsetValue); }
/// <summary> /// Looks in the ResourceDictionary for the desired resource. /// </summary> /// <param name="dictionary">The ResourceDictionary to look in.</param> /// <param name="key">The key for the resource.</param> /// <param name="allowDeferredResourceReference"> /// If this flag is true the resource will not actually be inflated from Baml. /// Instead we will return an instance of DeferredDictionaryReference which /// can later be used to query the resource /// </param> /// <param name="mustReturnDeferredResourceReference"> /// If this method is true this method will always return a /// DeferredThemeResourceReference instance which envelopes the underlying resource. /// </param> /// <param name="canCache">Whether callers should cache the value.</param> /// <returns>The resource if found and successfully loaded, null otherwise.</returns> private static object LookupResourceInDictionary( ResourceDictionary dictionary, object key, bool allowDeferredResourceReference, bool mustReturnDeferredResourceReference, out bool canCache) { object resource = null; IsSystemResourcesParsing = true; try { resource = dictionary.FetchResource(key, allowDeferredResourceReference, mustReturnDeferredResourceReference, out canCache); } finally { IsSystemResourcesParsing = false; } return resource; }