Wpf 将画布包装到网格时丢失画布滚动条

Wpf 将画布包装到网格时丢失画布滚动条,wpf,xaml,canvas,grid,Wpf,Xaml,Canvas,Grid,此问题发生在WPF应用程序中 项目正在使用ContentControl加载画布并在此画布中绘制需要绘制的任何内容。 此画布具有垂直和水平滚动条 现在我需要将这个ContentControl包装到一个网格中,在GroupBox旁边 所以我替换了: <ContentControl Grid.Row="1" Content="{Binding Viewer.Content}" Margin="10,10,0,0"/> 与: 执行此操作时,我的新GroupBox会正确渲染,画布仍

此问题发生在WPF应用程序中

项目正在使用ContentControl加载画布并在此画布中绘制需要绘制的任何内容。 此画布具有垂直和水平滚动条

现在我需要将这个ContentControl包装到一个网格中,在GroupBox旁边

所以我替换了:

 <ContentControl Grid.Row="1" Content="{Binding Viewer.Content}" Margin="10,10,0,0"/>

与:


执行此操作时,我的新GroupBox会正确渲染,画布仍会显示,但没有水平和垂直滚动条。 有什么原因吗


实际上,即使我对GroupBox进行了注释,滚动条也会被删除。因此,删除滚动条似乎源于将ContentControl包装到网格中。

之所以会出现这种情况,是因为您将列的宽度设置为
自动
宽度,根据定义,该宽度允许该列的子项使用列内容所需的任何空间和大小


这样做就是否定任何边界,以调用
ContentControl
模板中内置的
ScrollViewer
。基本上是因为它没有告诉它“嘿!你只允许是x,y大小,如果你超过这个大小,那么我们需要滚动条。”这是一个简单的表达方式。因此,您需要设置一个
MaxWidth
或使用
*
或调用该边界的东西,以便
ScrollViewer
启动。

Thx作为解释。知道第一列(gridview)的可见性为true或折叠。所以我想我不能使用Width=“N*”。有没有办法让ScrollVewer正确渲染(显示其滚动条)并自动适应gridview的可见性?@a.D.我看到的是网格,但不是gridview。如果一列的内容具有可见性切换,则为其指定
Auto
宽度,以便在其子项不存在时折叠。然后给出另一列
*
,在那里你可以滚动可编辑的内容,它会在必要时调用滚动。太好了。通过将第一列的宽度设置为“自动”,第二列的宽度设置为1*,效果很好。一吨重的克里斯,你摇滚:)很抱歉这个愚蠢的问题。@a.D.别担心,伙计,我们都去过。很高兴你得到了治疗
<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>