WPF应用程序中会出现此问题。
该项目正在使用ContentControl加载Canvas并在此画布中绘制任何需要绘制的内容。 此画布具有垂直和水平滚动条。
现在我需要将此ContentControl包装到GroupBox旁边的网格中。
所以我换了:
<ContentControl Grid.Row="1" Content="{Binding Viewer.Content}" Margin="10,10,0,0"/>
使用:
<Grid Grid.Row="1" x:Name="Load_Grid" Panel.ZIndex="2" Background="DarkGray" Opacity="0.9">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0"
x:Name="Legend_Inserts_Status"
Header="Legend"
HorizontalAlignment="Left"
BorderBrush="#FF4EA8DE"
FontSize="10"
Foreground="#FF436EFF"
Width="80"
Visibility="{Binding DisplayLegend,Converter={StaticResource BoolToVis}}">
<Grid>
<!--My groupbox content here -->
</Grid>
</GroupBox>
<ContentControl Grid.Column="1" Content="{Binding Viewer.Content}" Margin="10,10,0,0"/>
</Grid>
执行此操作时,我的新GroupBox正确呈现,画布仍然显示但没有水平和垂直滚动条。 有什么理由吗?
实际上,即使我对GroupBox发表评论,也会删除滚动条。因此,删除滚动条似乎是将ContentControl包装到网格中。
答案 0 :(得分:1)
这是因为您将列设置为Auto
Width
,根据定义,该列允许该列的子节点占用列内容所需的任何空间和大小。
通过这样做,你可以否定任何边界来调用ScrollViewer
模板中内置的ContentControl
。基本上是因为它没有任何说法“嘿!你只能被允许x,y尺寸,如果你超过这个尺寸,那么我们需要滚动条。”是一种简单的方式。因此,您需要设置MaxWidth
或使用*
或其他会调用ScrollViewer
边界的内容。