// Callback invoked when VectorHeight changes
        private static void onVectorHeightChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            SharpButton    self       = (SharpButton)d;
            AdvancedLength new_height = (AdvancedLength)e.NewValue;

            if (self.IsLoaded)
            {
                updateActualVectorSize(self, self.VectorWidth, new_height);
            }
        }
        // Recompute the Vector's ActualWidth and ActualSize base on current size conditions
        private static void updateActualVectorSize(SharpButton self, AdvancedLength new_width, AdvancedLength new_height)
        {
            self.VectorStretch = Stretch.Fill;
            if (new_width.Unit == AdvancedLength.UnitType.Auto || new_height.Unit == AdvancedLength.UnitType.Auto)
            {
                self.VectorStretch = Stretch.Uniform;
            }

            self.ActualVectorHeight = self.computeActualVectorSize(new_height, self.ActualHeight);
            self.ActualVectorWidth  = self.computeActualVectorSize(new_width, self.ActualWidth - self._PART_Content.ActualWidth);
        }