private static void OnBackgroundShapeChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ButtonGrid me = d as ButtonGrid;

            if (me != null)
            {
                me.RenderButtonGrid(true, false);
            }
        }
        private static void OnBackBorderThickChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ButtonGrid me = d as ButtonGrid;

            if (me != null && me.backPath != null)
            {
                me.backPath.StrokeThickness = (double)e.NewValue;
            }
        }
        private static void OnForeShapeFillChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ButtonGrid me = d as ButtonGrid;

            if (me != null && me.forePath != null)
            {
                me.forePath.Fill = e.NewValue as Brush;
            }
        }
        private static void OnBackBorderBrushChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ButtonGrid me = d as ButtonGrid;

            if (me != null && me.backPath != null)
            {
                me.backPath.Stroke = e.NewValue as Brush;
            }
        }
        private static void OnIsEnabledChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ButtonGrid me = d as ButtonGrid;

            if (me != null)
            {
                if ((bool)e.NewValue)
                {
                    me.IsHitTestVisible = true;
                    me.SetBackToNormal();
                }
                else
                {
                    me.IsHitTestVisible = false;
                    me.SetToBeDisabled();
                }
            }
        }