private void onWindowLeftMouseUp(object sender, MouseButtonEventArgs e)
 {
     if (leftMouseLastStatus == MouseButtonState.Pressed)
     {
         OnProgressBarUpdate(this, null);
         ProgressBarBeingEdited = null;
     }
     leftMouseLastStatus = MouseButtonState.Released;
 }
        static void updateProgressBar(RoundedProgressBar progressBar)
        {
            if (progressBar.MinProgress > progressBar.MaxProgress || progressBar.Progress > progressBar.MaxProgress || progressBar.Progress < progressBar.MinProgress)
            {
                return;
            }

            var normProgress = calculateNormalizedProgress(progressBar.MinProgress, progressBar.MaxProgress, progressBar.Progress);

            progressBar.ProgressWidth = Convert.ToInt32(progressBar.ActualWidth * normProgress);
        }
 private void onWindowMouseMove(object sender, MouseEventArgs e)
 {
     if (ProgressBarBeingEdited != null && ProgressBarBeingEdited != this)
     {
         return;
     }
     if ((IsMouseOver && e.LeftButton == MouseButtonState.Pressed) || leftMouseLastStatus == MouseButtonState.Pressed)
     {
         leftMouseLastStatus = MouseButtonState.Pressed;
         var progressPercent = e.GetPosition(this).X / ActualWidth;       // Calculated progress in percentage
         progressPercent = progressPercent > 0.985 ? 1 : progressPercent; // Skip to the end if very close
         progressPercent = progressPercent < 0.015 ? 0 : progressPercent; // Skip to the start if very close
         var difference = Math.Abs(MinProgress - MaxProgress);            // Max difference
         Progress = MinProgress + (difference * progressPercent);
         ProgressBarBeingEdited = this;
     }
 }