public override void OnApplyTemplate()
        {
            if (SwitchRendererControl != null)
            {
                SwitchRendererControl.LayerRendererChanged          -= SwitchRendererControl_LayerRendererChanged;
                SwitchRendererControl.LayerRendererAttributeChanged -= SwitchRendererControl_LayerRendererAttributeChanged;
            }

            if (SymbolConfigControl != null)
            {
                SymbolConfigControl.SymbolModified -= SymbolConfigControl_SymbolModified;
            }
            if (GraphicSymbolsTakePrecedence != null)
            {
                GraphicSymbolsTakePrecedence.Checked   -= GraphicSymbolsTakePrecedence_Checked;
                GraphicSymbolsTakePrecedence.Unchecked -= GraphicSymbolsTakePrecedence_Checked;
            }

            base.OnApplyTemplate();

            SwitchRendererControl = GetTemplateChild(PART_SWITCHRENDERERCONTROL) as SwitchRendererControl;
            if (SwitchRendererControl != null)
            {
                SwitchRendererControl.LayerRendererChanged          += SwitchRendererControl_LayerRendererChanged;
                SwitchRendererControl.LayerRendererAttributeChanged += SwitchRendererControl_LayerRendererAttributeChanged;
            }

            RendererOptionsContainerBorder = GetTemplateChild(PART_RENDEREROPTIONSCONTAINERBORDER) as Border;

            RendererOptionsContainerControl = GetTemplateChild(PART_RENDEREROPTIONSCONTAINERCONTROL) as ContentControl;

            RendererSymbolSetContainerControl = GetTemplateChild(PART_RENDERERSYMBOLSETCONTAINERCONTROL) as ContentControl;

            SymbolConfigControl = GetTemplateChild(PART_SYMBOLCONFIGCONTROL) as SymbolConfigControl;
            if (SymbolConfigControl != null)
            {
                SymbolConfigControl.SymbolModified += SymbolConfigControl_SymbolModified;
            }

            CurrentSymbolLabel = GetTemplateChild(PART_CURRENTSYMBOLLABEL) as TextBlock;

            GraphicSymbolsTakePrecedence = GetTemplateChild(PART_GraphicSymbolsTakePrecedence) as CheckBox;
            if (GraphicSymbolsTakePrecedence != null)
            {
                GraphicSymbolsTakePrecedence.Checked   += GraphicSymbolsTakePrecedence_Checked;
                GraphicSymbolsTakePrecedence.Unchecked += GraphicSymbolsTakePrecedence_Checked;
            }

            bindUIToLayer();

            if (InitCompleted != null)
            {
                InitCompleted(this, EventArgs.Empty);
            }
        }
        public override void OnApplyTemplate()
        {            
            if (SwitchRendererControl != null)
            {
                SwitchRendererControl.LayerRendererChanged -= SwitchRendererControl_LayerRendererChanged;
                SwitchRendererControl.LayerRendererAttributeChanged -= SwitchRendererControl_LayerRendererAttributeChanged;
            }

            if (SymbolConfigControl != null)
                SymbolConfigControl.SymbolModified -= SymbolConfigControl_SymbolModified;
            if (GraphicSymbolsTakePrecedence != null)
            {
                GraphicSymbolsTakePrecedence.Checked -= GraphicSymbolsTakePrecedence_Checked;
                GraphicSymbolsTakePrecedence.Unchecked -= GraphicSymbolsTakePrecedence_Checked;
            }

            base.OnApplyTemplate();

            SwitchRendererControl = GetTemplateChild(PART_SWITCHRENDERERCONTROL) as SwitchRendererControl;
            if (SwitchRendererControl != null)
            {
                SwitchRendererControl.LayerRendererChanged += SwitchRendererControl_LayerRendererChanged;
                SwitchRendererControl.LayerRendererAttributeChanged += SwitchRendererControl_LayerRendererAttributeChanged;
            }

            RendererOptionsContainerBorder = GetTemplateChild(PART_RENDEREROPTIONSCONTAINERBORDER) as Border;

            RendererOptionsContainerControl = GetTemplateChild(PART_RENDEREROPTIONSCONTAINERCONTROL) as ContentControl;

            RendererSymbolSetContainerControl = GetTemplateChild(PART_RENDERERSYMBOLSETCONTAINERCONTROL) as ContentControl;

            SymbolConfigControl = GetTemplateChild(PART_SYMBOLCONFIGCONTROL) as SymbolConfigControl;
            if(SymbolConfigControl != null)
                SymbolConfigControl.SymbolModified += SymbolConfigControl_SymbolModified;

            CurrentSymbolLabel = GetTemplateChild(PART_CURRENTSYMBOLLABEL) as TextBlock;

            GraphicSymbolsTakePrecedence = GetTemplateChild(PART_GraphicSymbolsTakePrecedence) as CheckBox;
            if (GraphicSymbolsTakePrecedence != null)
            {
                GraphicSymbolsTakePrecedence.Checked += GraphicSymbolsTakePrecedence_Checked;
                GraphicSymbolsTakePrecedence.Unchecked += GraphicSymbolsTakePrecedence_Checked;
            }

            bindUIToLayer();

            if (InitCompleted != null)
                InitCompleted(this, EventArgs.Empty);
        }