我正在尝试在画布中加载图像,这样,如果图像的大小溢出画布,滚动条应该被激活(MS Paint样式)
<Window>
<ScrollViewer>
<Canvas ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Image Source="SampleImage.jpg" />
</Canvas>
</ScrollViewer>
</Window>
Canvas
被拉伸到Window
的大小,滚动条不会显示为Canvas
实际上并没有溢出{{1} }}。Window
比Image
大得多,它会被Canvas
的边界剪切,所以Canvas
并不认为它的内容:ScrollViewer
实际上已经溢出。 Canvas
也会发生很多时间,即使绑定数据有几十行,但滚动条仍然无法激活。有时滚动查看器对我来说似乎很神秘。
因此,使用StackPanel
控件时应记住的基本逻辑应该是什么。
谢谢。
修改:刚编辑了问题标题,以便任何有问题的画布都可以在搜索中轻松获得此问题。
答案 0 :(得分:5)
From MSDN: Canvas是唯一没有固有布局特征的面板元素。 Canvas的默认高度和宽度属性为零,除非它是自动调整其子元素大小的元素的子元素。画布的子元素永远不会调整大小,它们只是定位在指定的坐标处。这为不需要或不需要固有尺寸限制或对准的情况提供了灵活性。对于您希望子内容自动调整大小并对齐的情况,通常最好使用Grid元素。
Hovever,你可以明确地设置Canvas Height和Width:
<ScrollViewer Height="100" Width="200">
<Canvas Height="400" Width="400">
//Content here
</Canvas>
</ScrollViewer>
答案 1 :(得分:3)