/// <summary>
        /// Create a visualization for the specified object.
        /// </summary>
        /// <param name="objectToVisualize"></param>
        /// <returns></returns>
        public FrameworkElement CreateVisualization(object objectToVisualize)
        {
            if (objectToVisualize == null)
            {
                throw new ArgumentNullException("objectToVisualize");
            }

            ModelVisualizationRegistration registration = GetRegistrationForExactType(objectToVisualize);

            if (registration == null)
            {
                registration = GetRegistrationForInterface(objectToVisualize);
            }

            if (registration == null)
            {
                if (!MustVisualize(objectToVisualize))
                {
                    return(objectToVisualize as FrameworkElement);
                }

                throw new InvalidOperationException(string.Format("No Visualization registered for {0}", objectToVisualize.GetType()));
            }
            return(CreateVisualization(objectToVisualize, registration));
        }
        /// <summary>
        /// Creates the visualization for the specified object.
        /// </summary>
        /// <param name="objectToVisualize">The object to visualize.</param>
        /// <param name="registration">The registration.</param>
        /// <returns></returns>
        protected virtual FrameworkElement CreateVisualization(object objectToVisualize, ModelVisualizationRegistration registration)
        {
            var view = this.container.Resolve(registration.ViewType) as FrameworkElement;

            return(new ModelVisualizer(objectToVisualize, view));
        }