/// <summary>
 /// Disposes the current object
 /// </summary>
 /// <param name="disposing">true to dispose both managed an unmanaged resources, false to dispose only managed resources</param>
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         Image.BeginAnimation(Image.SourceProperty, null);
         Animation.Completed -= AnimationCompleted;
         SourceDescriptor.RemoveValueChanged(Image, ImageSourceChanged);
         Image.Source = null;
     }
 }