@@ -335,7 +335,7 @@ void HandleLowerSliderPropertyChanged(object? sender, PropertyChangedEventArgs e
335335
336336 if ( e . PropertyName . Is ( Slider . ValueProperty ) )
337337 {
338- LowerValue = ( StepSize == 0.0 ? lowerSlider . Value : Math . Round ( lowerSlider . Value ) ) * GetUnit ( ) + MinimumValue ;
338+ LowerValue = CalculateValueFromSliderValue ( lowerSlider . Value ) ;
339339 SetFocusMode ( RangeSliderFocusMode . Lower ) ;
340340 UpdateInnerTrackLayout ( ) ;
341341 }
@@ -368,12 +368,17 @@ void HandleUpperSliderPropertyChanged(object? sender, PropertyChangedEventArgs e
368368
369369 if ( e . PropertyName . Is ( Slider . ValueProperty ) )
370370 {
371- UpperValue = ( StepSize == 0.0 ? upperSlider . Value : Math . Round ( upperSlider . Value ) ) * GetUnit ( ) + MinimumValue ;
371+ UpperValue = CalculateValueFromSliderValue ( upperSlider . Value ) ;
372372 SetFocusMode ( RangeSliderFocusMode . Upper ) ;
373373 UpdateInnerTrackLayout ( ) ;
374374 }
375375 }
376376
377+ double CalculateValueFromSliderValue ( double sliderValue )
378+ {
379+ return ( StepSize == 0.0 ? sliderValue : Math . Round ( sliderValue ) ) * GetUnit ( ) + MinimumValue ;
380+ }
381+
377382 void HandleUpperSliderFocused ( object ? sender , FocusEventArgs e )
378383 {
379384 SetFocusMode ( RangeSliderFocusMode . Upper ) ;
@@ -397,7 +402,7 @@ void UpdateFocusedSliderLayout()
397402
398403 double range = upperSlider . Maximum - lowerSlider . Minimum ;
399404 double trackWidth = Width - PlatformThumbSize ;
400- if ( range != 0 && trackWidth > 0 )
405+ if ( IsLayoutValid ( range , trackWidth ) )
401406 {
402407 lowerSlider . WidthRequest = trackWidth * ( lowerSlider . Maximum - lowerSlider . Minimum ) / range + PlatformThumbSize ;
403408 upperSlider . WidthRequest = trackWidth * ( upperSlider . Maximum - upperSlider . Minimum ) / range + PlatformThumbSize ;
@@ -434,10 +439,15 @@ void UpdateInnerTrackLayout()
434439 {
435440 double range = upperSlider . Maximum - lowerSlider . Minimum ;
436441 double trackWidth = Width - PlatformThumbSize ;
437- if ( range != 0 && trackWidth > 0 )
442+ if ( IsLayoutValid ( range , trackWidth ) )
438443 {
439444 innerTrack . TranslationX = trackWidth * ( lowerSlider . Value - lowerSlider . Minimum ) / range + PlatformThumbSize / 2 - InnerTrackSize / 2 ;
440445 innerTrack . WidthRequest = trackWidth * ( upperSlider . Value - lowerSlider . Value ) / range + InnerTrackSize ;
441446 }
442447 }
448+
449+ bool IsLayoutValid ( double range , double trackWidth )
450+ {
451+ return range != 0 && trackWidth > 0 ;
452+ }
443453}
0 commit comments