【发布时间】:2015-05-28 19:46:09
【问题描述】:
我正在尝试在画布中加载图像,这样,如果图像的大小超出画布,则应激活滚动条(MS Paint 样式)
<Window>
<ScrollViewer>
<Canvas ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Image Source="SampleImage.jpg" />
</Canvas>
</ScrollViewer>
</Window>
- 现在
Canvas被拉伸到Window的大小,滚动条不会出现,因为Canvas实际上并没有溢出Window。 - 其次,由于
Image比Canvas大得多,它会被限制在Canvas的范围内,所以ScrollViewer不认为它的内容:Canvas实际上是溢出的。
StackPanels 也经常发生这种情况,即使绑定的数据有数十行,但滚动条仍然没有被激活。有时滚动查看器对我来说似乎很神秘。
那么,在使用ScrollViewer控件时应该牢记的基本逻辑是什么。
谢谢。
编辑:刚刚编辑了问题标题,这样任何对画布有问题的人都可以在搜索中轻松找到这个问题。
【问题讨论】:
-
删除画布,它应该可以工作
-
是的,但为什么不使用画布。如果图像不仅仅是窗口的控制,你可能有菜单、工具栏、状态栏等,因此它应该有另一个容器而不是
Window。 -
看我的回答,为什么不用画布。如果有更多元素,只需将 Canvas 替换为 Grid 即可。仅当您不关心其大小时才使用 Canvas。出于滚动目的,您需要知道画布大小。 ScrollViewer 没有什么神秘之处:)
标签: wpf xaml scrollviewer