Ejemplo n.º 1
0
        //------------------------------------------------------
        //
        //  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);
        }
Ejemplo n.º 2
0
        /// <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;
        }