public void Measure_Should_Return_Thumb_DesiredHeight_In_Horizontal_Orientation() { var thumb = new Thumb { Height = 12, }; var target = new Track { Thumb = thumb, Orientation = Orientation.Horizontal, }; target.Measure(new Size(100, 100)); Assert.Equal(new Size(0, 12), target.DesiredSize); }
public void Measure_Should_Return_Thumb_DesiredWidth_In_Vertical_Orientation() { var thumb = new Thumb { Width = 12, }; var target = new Track { Thumb = thumb, Orientation = Orientation.Vertical, }; target.Measure(new Size(100, 100)); Assert.Equal(new Size(12, 0), target.DesiredSize); }
public void Should_Arrange_Thumb_In_Vertical_Orientation() { var thumb = new Thumb { Width = 12, }; var target = new Track { Thumb = thumb, Orientation = Orientation.Vertical, Minimum = 100, Maximum = 300, Value = 150, ViewportSize = 50, Width = 12, }; target.Measure(new Size(100, 100)); target.Arrange(new Rect(0, 0, 100, 100)); Assert.Equal(new Rect(0, 18, 12, 25), thumb.Bounds); }
public void Should_Arrange_Thumb_In_Horizontal_Orientation() { var thumb = new Thumb { Height = 12, }; var target = new Track { Thumb = thumb, Orientation = Orientation.Horizontal, Minimum = 100, Maximum = 200, Height = 12, Value = 150, ViewportSize = 50, }; target.Measure(new Size(100, 100)); target.Arrange(new Rect(0, 0, 100, 100)); Assert.Equal(new Rect(25, 0, 50, 12), thumb.Bounds); }
protected override Size ArrangeOverride(Size arrangeSize) { double decreaseButtonLength, thumbLength, increaseButtonLength; var isVertical = Orientation == Orientation.Vertical; var viewportSize = Math.Max(0.0, ViewportSize); // If viewport is NaN, compute thumb's size based on its desired size, // otherwise compute the thumb base on the viewport and extent properties if (double.IsNaN(ViewportSize)) { ComputeSliderLengths(arrangeSize, isVertical, out decreaseButtonLength, out thumbLength, out increaseButtonLength); } else { // Don't arrange if there's not enough content or the track is too small if (!ComputeScrollBarLengths(arrangeSize, viewportSize, isVertical, out decreaseButtonLength, out thumbLength, out increaseButtonLength)) { return(arrangeSize); } } // Layout the pieces of track var offset = new Point(); var pieceSize = arrangeSize; var isDirectionReversed = IsDirectionReversed; if (isVertical) { CoerceLength(ref decreaseButtonLength, arrangeSize.Height); CoerceLength(ref increaseButtonLength, arrangeSize.Height); CoerceLength(ref thumbLength, arrangeSize.Height); offset = offset.WithY(isDirectionReversed ? decreaseButtonLength + thumbLength : 0.0); pieceSize = pieceSize.WithHeight(increaseButtonLength); if (IncreaseButton != null) { IncreaseButton.Arrange(new Rect(offset, pieceSize)); } offset = offset.WithY(isDirectionReversed ? 0.0 : increaseButtonLength + thumbLength); pieceSize = pieceSize.WithHeight(decreaseButtonLength); if (DecreaseButton != null) { DecreaseButton.Arrange(new Rect(offset, pieceSize)); } offset = offset.WithY(isDirectionReversed ? decreaseButtonLength : increaseButtonLength); pieceSize = pieceSize.WithHeight(thumbLength); if (Thumb != null) { Thumb.Arrange(new Rect(offset, pieceSize)); } ThumbCenterOffset = offset.Y + (thumbLength * 0.5); } else { CoerceLength(ref decreaseButtonLength, arrangeSize.Width); CoerceLength(ref increaseButtonLength, arrangeSize.Width); CoerceLength(ref thumbLength, arrangeSize.Width); offset = offset.WithX(isDirectionReversed ? increaseButtonLength + thumbLength : 0.0); pieceSize = pieceSize.WithWidth(decreaseButtonLength); if (DecreaseButton != null) { DecreaseButton.Arrange(new Rect(offset, pieceSize)); } offset = offset.WithX(isDirectionReversed ? 0.0 : decreaseButtonLength + thumbLength); pieceSize = pieceSize.WithWidth(increaseButtonLength); if (IncreaseButton != null) { IncreaseButton.Arrange(new Rect(offset, pieceSize)); } offset = offset.WithX(isDirectionReversed ? increaseButtonLength : decreaseButtonLength); pieceSize = pieceSize.WithWidth(thumbLength); if (Thumb != null) { Thumb.Arrange(new Rect(offset, pieceSize)); } ThumbCenterOffset = offset.X + (thumbLength * 0.5); } return(arrangeSize); }
private static Control ThumbTemplate(Thumb control) { return new Border { Background = Brushes.Gray, }; }
public void Thumb_Should_Be_Logical_Child() { var thumb = new Thumb { Height = 12, }; var target = new Track { Height = 12, Thumb = thumb, Orientation = Orientation.Horizontal, Minimum = 100, Maximum = 100, }; Assert.Same(thumb.Parent, target); Assert.Equal(new[] { thumb }, ((ILogical)target).LogicalChildren); }
public void Thumb_Should_Fill_Track_When_Minimum_Equals_Maximum() { var thumb = new Thumb { Height = 12, }; var target = new Track { Height = 12, Thumb = thumb, Orientation = Orientation.Horizontal, Minimum = 100, Maximum = 100, }; target.Measure(new Size(100, 100)); target.Arrange(new Rect(0, 0, 100, 100)); Assert.Equal(new Rect(0, 0, 100, 12), thumb.Bounds); }