如何在Stackpanel中调整ScrollViewer的大小以适应窗口的大小
本文关键字:窗口 ScrollViewer Stackpanel 调整 | 更新日期: 2023-09-27 18:19:06
我创建一个固定尺寸的画布,尺寸为A4纸(21cm x 29,7cm)。
我想在ScrollViewer和StackPanel中滚动。然而,ScrollViewer似乎没有根据窗口的大小调整其大小。我怎样才能做到这一点呢?
这是我到目前为止的代码。{}之间的文本将被删除以提高可读性。
<Window {xmlns stuff here} Width="900" Height="1200" >
<StackPanel>
<my:Ribbon ShowQuickAccessToolBarOnTop="False">
{ ... Ribbon definition ... }
</my:Ribbon>
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Visible" >
<Canvas x:Name="PageCanvas" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="21cm" Height="29.7cm" >
{ ... Various drawings and elements here ... }
</Canvas>
</ScrollViewer>
</StackPanel >
</Window>
StackPanel被设计成在一个方向上无限增长。所以你不能完成你的任务没有固定的高度StackPanel或没有替换StackPanel与另一个面板(如网格为例)。
我建议你使用Grid:
<Window {xmlns stuff here} Width="900" Height="1200" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto">
<RowDefinition Height="*">
</Grid.RowDefinitions>
<my:Ribbon ShowQuickAccessToolBarOnTop="False" Grid.Row="0">
{ ... Ribbon definition ... }
</my:Ribbon>
<ScrollViewer HorizontalScrollBarVisibility="Auto" Grid.Row="1"
VerticalScrollBarVisibility="Visible" >
<Canvas x:Name="PageCanvas" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="21cm" Height="29.7cm" >
{ ... Various drawings and elements here ... }
</Canvas>
</ScrollViewer>
</StackPanel >
</Window>