private void OnProgressValueChanged(DependencyPropertyChangedEventArgs e)
        {
            double value = (double)e.NewValue;

            if (MathHelper.AreEqual(IndeterminateValue, value))
            {
                EnsureIndeterminate();
            }
            else
            {
                EnsureDeterminate();
                Value = value;
            }
            if (MathHelper.AreEqual(value, IndeterminateValue))
            {
                if (!IsIndeterminate)
                {
                    IsIndeterminate = true;
                }
            }
            else
            {
                if (IsIndeterminate)
                {
                    IsIndeterminate = false;
                }
                Value = (double)e.NewValue;
            }
        }
        static object CoerceProgressValue(DependencyObject d, object baseValue)
        {
            ProgressBarControl control = (ProgressBarControl)d;
            double             value   = (double)baseValue;

            if (MathHelper.AreEqual(control.IndeterminateValue, value))
            {
                return(baseValue);
            }
            if (value < control.Minimum)
            {
                return(control.Minimum);
            }
            if (value > control.Maximum)
            {
                return(control.Maximum);
            }
            return(baseValue);
        }