/// <summary> /// Handles changes to the FadeInOnLoaded property. /// </summary> /// <param name="d"> /// The <see cref="DependencyObject"/> on which /// the property has changed value. /// </param> /// <param name="e"> /// Event data that is issued by any event that /// tracks changes to the effective value of this property. /// </param> private static void OnFadeInOnLoadedChanged( DependencyObject d, DependencyPropertyChangedEventArgs e) { bool oldFadeInOnLoaded = (bool)e.OldValue; bool newFadeInOnLoaded = (bool)d.GetValue(FadeInOnLoadedProperty); var image = (Image)d; if (DesignMode.DesignModeEnabled) { return; } if (newFadeInOnLoaded) { var handler = new FadeInOnLoadedHandler((Image)d); SetFadeInOnLoadedHandler(d, handler); #pragma warning disable 4014 image.Dispatcher.RunAsync( CoreDispatcherPriority.High, () => image.SetBinding( SourceProperty, new Binding { Path = new PropertyPath("Source"), Source = image })); #pragma warning restore 4014 } else { var handler = GetFadeInOnLoadedHandler(d); SetFadeInOnLoadedHandler(d, null); handler.Detach(); image.SetValue( ImageExtensions.SourceProperty, null); } }
public static void SetFadeInOnLoadedHandler(DependencyObject d, FadeInOnLoadedHandler value) { d.SetValue(FadeInOnLoadedHandlerProperty, value); }