WPF ScrollViewer无法正常工作

时间:2016-03-16 14:18:00

标签: c# wpf xaml scrollview

我想向我的程序添加滚动视图,我尝试了ScrollView控件,但是没有生效。这是我第一次处理卷轴请帮帮我:)。

我的xaml代码:

<DockPanel Grid.Row="1" Background="#FF695887">
        <ScrollViewer VerticalScrollBarVisibility="Auto" Height="795">
            <Canvas Name="zemelapis" Height="Auto" Width="Auto">
                <Image Name="pav_kelias" />
                <Image Name="car1" />
            </Canvas>
        </ScrollViewer>
</DockPanel>

由于这两张图片不合适,我需要一个滚动条。也许我应该使用ScrollBar?

我的程序示例:https://gyazo.com/a4ba7e4d5004632e2229a87e686c4c09 ,你可以看到底部图像不适合窗口范围。

2 个答案:

答案 0 :(得分:3)

如果您希望ScrollViewer轻松工作,请使用Grid而不是Canvas:

<DockPanel Background="#FF695887">
        <ScrollViewer >
            <Grid Name="zemelapis">
                <Image Name="pav_kelias" Source="acteurs.png"/>
                <Image Name="car1" Source="public.jpg"/>
            </Grid>
        </ScrollViewer>
    </DockPanel>

正如Domysee解释的那样,Canvas可以让您完全控制布局。然而,网格将根据内容自动调整其大小。

请参阅http://www.wpf-tutorial.com/panels/introduction-to-wpf-panels/

答案 1 :(得分:2)

您已将Auto指定为HeightWidth。这意味着Canvas将填充可用的高度。

来自documentation

  

自动调整大小行为意味着元素将填充高度   可以使用。

在这种情况下,可用高度是ScrollViewer的高度。

如果您希望Canvas更大,从而滚动ScrollViewer,则应在Canvas上设置一个高于ScrollViewer高度的高度。

所以,例如:

<DockPanel Grid.Row="1" Background="#FF695887">
        <ScrollViewer VerticalScrollBarVisibility="Auto" Height="795">
            <Canvas Name="zemelapis" Height="1000" Width="Auto">
                <Image Name="pav_kelias" />
                <Image Name="car1" />
            </Canvas>
        </ScrollViewer>
</DockPanel>