/// <summary>
        /// Here when the Mode property on a TagVisualizer changes.
        /// </summary>
        /// <param name="visualizer"></param>
        /// <param name="oldMode"></param>
        /// <param name="newMode"></param>
        private static void OnVisualizerModeChanged(
            TagVisualizer visualizer,
            TagVisualizerSynchronizationMode oldMode,
            TagVisualizerSynchronizationMode newMode)
        {
            Debug.Assert(visualizer != null);
            Debug.Assert(oldMode != newMode);

            // Add or remove visualizer if necessary
            bool oldIsActive = oldMode != TagVisualizerSynchronizationMode.Off;
            bool newIsActive = newMode != TagVisualizerSynchronizationMode.Off;
            if (!oldIsActive && newIsActive)
            {
                AddVisualizer(visualizer);
            }
            else if (oldIsActive && !newIsActive)
            {
                RemoveVisualizer(visualizer);
            }

            // Is the visualizer active?
            if (newIsActive)
            {
                bool oldAutoSynchronize = oldMode == TagVisualizerSynchronizationMode.Auto;
                bool newAutoSynchronize = newMode == TagVisualizerSynchronizationMode.Auto;
                if (!oldAutoSynchronize && newAutoSynchronize)
                {
                    BeginAutoSynchronize(visualizer);
                }
                else if (oldAutoSynchronize && !newAutoSynchronize)
                {
                    EndAutoSynchronize(visualizer);
                }
            }
        }
 public static void SetMode(TagVisualizer visualizer, TagVisualizerSynchronizationMode mode)
 {
     if (visualizer == null)
     {
         throw new ArgumentNullException("visualizer");
     }
     visualizer.SetValue(ModeProperty, mode);
 }