2011-03-22 178 views
7

我怎么可能让内容其内放WPF ViewboxStretch="UniformToFill"是滚动滚动内容

例如:

<Grid Height="500" Width="1000" > 
    <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" > 
     <Viewbox Stretch="UniformToFill"> 
     ...... 

     </Viewbox> 
    </ScrollViewer> 
</Grid> 

的内容被调整大小以填充目标尺寸而它保留其原始长宽比。如果目的地的宽高比与来源不同,则源内容将被剪辑为以适合目标维度。
所以我试着用ScrollViewer能够滚动到被裁剪的源内容的区域,但滚动条是可见的但被禁用。我试过ClipToBounds="False"但它没有帮助。

+0

在scrollviewer中放置viewbox是非常不寻常的。一个调整内容以适应一定的空间,另一个让用户滚动查看对于空间来说太大的内容。也许你应该退后一步并描述你想要实现的目标? – 2011-03-22 13:29:57

+1

@Robert Levy Viewbox内容由不可预知数量的其他控件组成。需要Viewbox来扩展和缩小内容,ScrollViewer在扩大内容时可以扩展内容。 – rem 2011-03-22 13:47:45

回答

15

ViewBox根据其占据的尺寸调整其内容。 ScrollViewer为其呈现无限宽度/高度的内容。所以,当你将一个ViewBox放入一个ScrollViewer时,ViewBox认为它拥有“世界上所有的空间”来伸展。

此外,ViewBox使用渲染转换来拉伸内容,这意味着您的ScrollViewer永远不会知道内容的最终大小。

为了让您的ScrollViewer正常工作,您必须在ViewBox上放置一个宽度/高度。它需要知道它占据了多少空间。

+1

谢谢,有用的答案! +1 – rem 2011-03-22 14:03:54