private object TryProvideValueImpl(IServiceProvider serviceProvider, bool allowDeferredReference, bool mustReturnDeferredResourceReference) { // Get prefetchedValue DeferredResourceReference prefetchedValue = PrefetchedValue; object value; if (prefetchedValue == null) { // Do a normal look up. value = FindResourceInEnviroment(serviceProvider, allowDeferredReference, mustReturnDeferredResourceReference); } else { // If we have a Deferred Value, first check the current parse stack for a better (nearer) // value. This happens when this is a parse of deferred content and there is another // Resource Dictionary availible above this, yet still part of this deferred content. // This searches up to the outer most enclosing resource dictionary. value = FindResourceInDeferredContent(serviceProvider, allowDeferredReference, mustReturnDeferredResourceReference); // If we didn't find a new value in this part of deferred content // then use the existing prefetchedValue (DeferredResourceReference) if (value == DependencyProperty.UnsetValue) { value = allowDeferredReference ? prefetchedValue : prefetchedValue.GetValue(BaseValueSourceInternal.Unknown); } } return(value); }
// Token: 0x06000864 RID: 2148 RVA: 0x0001B4A4 File Offset: 0x000196A4 private object TryProvideValueImpl(IServiceProvider serviceProvider, bool allowDeferredReference, bool mustReturnDeferredResourceReference) { DeferredResourceReference prefetchedValue = this.PrefetchedValue; object obj; if (prefetchedValue == null) { obj = this.FindResourceInEnviroment(serviceProvider, allowDeferredReference, mustReturnDeferredResourceReference); } else { obj = this.FindResourceInDeferredContent(serviceProvider, allowDeferredReference, mustReturnDeferredResourceReference); if (obj == DependencyProperty.UnsetValue) { obj = (allowDeferredReference ? prefetchedValue : prefetchedValue.GetValue(BaseValueSourceInternal.Unknown)); } } return(obj); }