/// <summary>
        /// Handle the Destination changing. Fill in the destination fields of the dialog.
        /// </summary>
        /// <param name="sender">The WindowMoveError who owns the property.</param>
        /// <param name="eventArgs">The event arguments.</param>
        private static void OnDestinationChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            WindowMoveError moveError = sender as WindowMoveError;

            if (moveError != null)
            {
                moveError.destinationIcon.Source = moveError.Destination.ImageSource;
                moveError.destinationName.Text   = moveError.Destination.Name;
            }
        }
        /// <summary>
        /// Handle the Source changing. Fill in the source fields of the dialog.
        /// </summary>
        /// <param name="sender">The WindowMoveError who owns the property.</param>
        /// <param name="eventArgs">The event arguments.</param>
        private static void OnSourceChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            WindowMoveError moveError = sender as WindowMoveError;

            if (moveError != null)
            {
                moveError.sourceIcon.Source = moveError.Source.ImageSource;
                moveError.sourceName.Text   = moveError.Source.Name;
            }
        }
        private static void OnIsDestinationSameAsSourceChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            WindowMoveError moveError = sender as WindowMoveError;

            if (moveError != null)
            {
                moveError.isSubfolder.Visibility  = moveError.IsDestinationSameAsSource ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
                moveError.isSameFolder.Visibility = moveError.IsDestinationSameAsSource ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
            }
        }
        /// <summary>
        /// Throw up a move error in the UI thread.
        /// </summary>
        /// <param name="source">The entity that was meant to be move.</param>
        /// <param name="destination">The destination folder for the move.</param>
        /// <param name="isDestinationSameAsSource">What kind of error occurred.</param>
        public static void Show(Entity source, Entity destination, Boolean isDestinationSameAsSource)
        {
            WindowMoveError moveError = new WindowMoveError()
            {
                Source      = source,
                Destination = destination,
                IsDestinationSameAsSource = isDestinationSameAsSource
            };

            moveError.ShowDialog();
        }