滚动查看器 & Canvas
Scrollviewer & Canvas
我正在尝试在 canvas 中加载图像,这样,如果图像的大小超出 canvas,滚动条应该被激活(MS Paint 样式)
<Window>
<ScrollViewer>
<Canvas ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Image Source="SampleImage.jpg" />
</Canvas>
</ScrollViewer>
</Window>
- 现在
Canvas
被拉伸到 Window
的大小,scroll-bars 不会出现,因为 Canvas
实际上并没有溢出 Window
].
- 其次,由于
Image
比 Canvas
大得多,它在 Canvas
的边界处被剪裁了,所以 ScrollViewer
不认为它的内容:Canvas
实际上溢出了。
StackPanel
s 也经常发生这种情况,即使绑定的数据有数十行,但滚动条仍然没有被激活。有时滚动查看器对我来说很神秘。
那么,在使用ScrollViewer
控件时应该牢记的基本逻辑是什么。
谢谢。
编辑: 刚刚编辑了问题标题,这样任何对canvas有疑问的人都可以在搜索中轻松找到这个问题。
也许这两个链接之一可以帮助您:
- Silverlight Canvas on Scrollviewer not triggering
- ScrollBars are not visible after changing positions of controls inside a Canvas
From MSDN:
Canvas 是唯一没有固有布局特征的面板元素。 Canvas 的默认高度和宽度属性为零,除非它是自动调整其子元素大小的元素的子元素。 Canvas 的子元素永远不会调整大小,它们只是定位在指定的坐标处。这为不需要或不需要固有的大小限制或对齐的情况提供了灵活性。对于希望子内容自动调整大小和对齐的情况,通常最好使用 Grid 元素。
但是,您可以明确设置 Canvas 高度和宽度:
<ScrollViewer Height="100" Width="200">
<Canvas Height="400" Width="400">
//Content here
</Canvas>
</ScrollViewer>
我正在尝试在 canvas 中加载图像,这样,如果图像的大小超出 canvas,滚动条应该被激活(MS Paint 样式)
<Window>
<ScrollViewer>
<Canvas ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Image Source="SampleImage.jpg" />
</Canvas>
</ScrollViewer>
</Window>
- 现在
Canvas
被拉伸到Window
的大小,scroll-bars 不会出现,因为Canvas
实际上并没有溢出Window
]. - 其次,由于
Image
比Canvas
大得多,它在Canvas
的边界处被剪裁了,所以ScrollViewer
不认为它的内容:Canvas
实际上溢出了。
StackPanel
s 也经常发生这种情况,即使绑定的数据有数十行,但滚动条仍然没有被激活。有时滚动查看器对我来说很神秘。
那么,在使用ScrollViewer
控件时应该牢记的基本逻辑是什么。
谢谢。
编辑: 刚刚编辑了问题标题,这样任何对canvas有疑问的人都可以在搜索中轻松找到这个问题。
也许这两个链接之一可以帮助您:
- Silverlight Canvas on Scrollviewer not triggering
- ScrollBars are not visible after changing positions of controls inside a Canvas
From MSDN: Canvas 是唯一没有固有布局特征的面板元素。 Canvas 的默认高度和宽度属性为零,除非它是自动调整其子元素大小的元素的子元素。 Canvas 的子元素永远不会调整大小,它们只是定位在指定的坐标处。这为不需要或不需要固有的大小限制或对齐的情况提供了灵活性。对于希望子内容自动调整大小和对齐的情况,通常最好使用 Grid 元素。
但是,您可以明确设置 Canvas 高度和宽度:
<ScrollViewer Height="100" Width="200">
<Canvas Height="400" Width="400">
//Content here
</Canvas>
</ScrollViewer>