首页 > 解决方案 > 防止 ScrollViewer 更改其内容大小

问题描述

我希望 ScrollViewer 只做一件事 - 允许我滚动。我不希望它允许其内容增长。然而确实如此。如何防止这种情况?

<ScrollViewer VerticalScrollBarVisibility="Auto" >
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Image Grid.Row="0" Source="a.png"/>
        <Grid Grid.Row="1" Height="400"/>
    </Grid>
</ScrollViewer>

如果我注释掉 ScrollViewer - 图像很小。如果我离开 ScrollViewer - 图像会增长。如何防止这种情况?

标签: c#.netwpf

解决方案


您可以通过将其Stretch属性设置为 来避免拉伸图像None

<Image Grid.Row="0" Stretch="None" .../>

Grid 和 Image 元素使用可滚动区域的整个宽度。由于默认的 Stretch 值为Uniform,因此 Image 随后会调整其高度以保持其纵横比。

等效但更简单的布局将是

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <StackPanel>
        <Image Stretch="None" Source="a.png"/>
        <Grid Height="400"/>
    </StackPanel>
</ScrollViewer>

推荐阅读