/// <summary>
        ///  LiveQuadDetectorControl constructor
        /// </summary>
        /// <param name="binding"></param>
        public LiveQuadDetectorControl(ISkillBinding binding) : base(binding)
        {
            // Update the view of the initial binding values
            m_liveQuadDetectorBindingFeatureValues = ExtractBindingValues(binding);
            m_interactiveControl = new LiveQuadDetectorSkillInteractiveControl();
            m_interactiveControl.ResetCheckedUnchecked += LiveQuadDetectorSkillInteractiveControl_ResetCheckedUnchecked;

            m_imageGrid.Children.Add(m_canvas);
            m_image.SetValue(Canvas.ZIndexProperty, -1);
            m_image.SizeChanged += Image_SizeChanged;

            // Add Quad results control
            m_quadsResultRenderer           = new QuadSetRenderer(ref m_canvas, 1);
            m_quadsResultRenderer.IsVisible = false;

            Children.Add(m_interactiveControl);
            m_interactiveControl.UpdateDisplayedInputValues(m_liveQuadDetectorBindingFeatureValues);
        }
        /// <summary>
        ///  QuadDetectorControl constructor
        /// </summary>
        /// <param name="binding"></param>
        public QuadDetectorControl(ISkillBinding binding) : base(binding)
        {
            // Update the view of the initial binding values
            m_quadDetectorBindingFeatureValues = ExtractBindingValues(binding);
            m_interactiveControl = new QuadDetectorSkillInteractiveControl();

            m_imageGrid.Children.Add(m_canvas);
            m_image.SetValue(Canvas.ZIndexProperty, -1);
            m_image.SizeChanged += Image_SizeChanged;

            // Add SubRectangleMargin control
            foreach (var margin in m_margins)
            {
                m_canvas.Children.Add(margin);
            }
            m_interactiveControl.SubMargingValueChanged            += QuadDetectorSkillInteractiveControl_SubMargingValueChanged;
            m_interactiveControl.MaxQuadValueChanged               += QuadDetectorSkillInteractiveControl_MaxQuadValueChanged;
            m_interactiveControl.NumberOfPixelsPerEdgeValueChanged += QuadDetectorSkillInteractiveControl_NumberOfPixelsPerEdgeValueChanged;

            // Add Quad results control
            m_quadsResultRenderer           = new QuadSetRenderer(ref m_canvas, 10);
            m_quadsResultRenderer.IsVisible = false;

            // Add BaseQuad control
            m_baseQuadRenderer                                    = new InteractiveQuadRenderer(ref m_canvas);
            m_baseQuadRenderer.IsVisible                          = false;
            m_baseQuadRenderer.CornersChanged                    += InteractiveQuadRenderer_CornersChanged;
            m_baseQuadRenderer.CornersChangeCompleted            += InteractiveQuadRenderer_CornersChangeCompleted;
            m_interactiveControl.SpecifyBaseQuadCheckedUnchecked += QuadDetectorSkillInteractiveControl_SpecifyBaseQuadCheckedUnchecked;

            // Add CenterPoint control
            m_centerPointControl.ManipulationDelta     += QuadRendererCenterPoint_ManipulationDelta;
            m_centerPointControl.ManipulationCompleted += QuadRendererCenterPoint_ManipulationCompleted;
            Mouse.SetCursor(m_centerPointControl, Windows.UI.Core.CoreCursorType.Pin);
            m_canvas.Children.Add(m_centerPointControl);
            m_interactiveControl.CenterPointCheckedUnchecked += QuadDetectorSkillInteractiveControl_CenterPointCheckedUnchecked;

            Children.Add(m_interactiveControl);
            m_interactiveControl.UpdateDisplayedInputValues(m_quadDetectorBindingFeatureValues);
        }