<Canvas>
<TextBlock Canva.Top=”120” Text=”Test”/>
</Canvas>
</ScrollViewer>
VerticalScrollBar is visible in upper case? Unfortunately, it is invisible, because the Size of Canvas is zero-zero.
How we can see the VerticalScrollBar in upper case?
The problem is caused by MeasureOverride method of Canvas. Below is an original MeasureOverride method of Canvas.
|
protected override Size MeasureOverride(Size constraint) { Size availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity); foreach (UIElement element in base.InternalChildren) { if (element != null) { element.Measure(availableSize); } } return new Size(); } |
OK, then, solution can be very easy, just define new Canvas, and override MeasureOverride method like below.
|
protected override Size MeasureOverride(Size constraint) { Size availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity); double maxHeight = 0; double maxWidth = 0; foreach (UIElement element in base.InternalChildren) { if (element != null) { element.Measure(availableSize); double left = Canvas.GetLeft(element); double top = Canvas.GetTop(element); left += element.DesiredSize.Width; top += element.DesiredSize.Height; maxWidth = maxWidth < left ? left : maxWidth; maxHeight = maxHeight < top ? top : maxHeight; } } return new Size { Height = maxHeight, Width = maxWidth }; } |
Thank you,

