2016-03-16 47 views
1

我想将滚动视图添加到我的程序中,我尝试了ScrollView控件,但不起作用。这是我第一次处理滚动请帮助我:)。WPF ScrollViewer无法正常工作

我的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> 

因为这2影像时,不会安装在这里,我需要为他们滚动。也许我应该使用ScrollBar?

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

+1

如果你改变了'Canvas'到'Grid',或一些其他类型的控制或对'Canvas'设置定义的高度吗? – Kidiskidvogingogin

回答

3

您已将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> 
4

如果你希望你的ScrollViewer轻松的工作,使用网格,而不是帆布:

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

正如Domysee解释,帆布让用户能完全控制的布局。然而,网格会根据内容自动调整其大小。

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

+1

不是我想要的那种方式。无论如何我需要Canvas,因为我使用GetTop,GetLeft等坐标进行操作。 –