2016-04-25 103 views
1

WPF應用程序中會出現此問題。將畫布包裝到網格時丟失畫布滾動條

該項目使用ContentControl加載畫布,並在此畫布中繪製任何需要繪製的畫布。 此畫布具有垂直和水平滾動條。

現在我需要將此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,滾動條也會被刪除。因此,似乎刪除滾動條來自將ContentControl包裝到網格中。

回答

1

發生這種情況的原因是您的列已設置爲AutoWidth,根據定義,該列允許該列的子級使用所需的任何空間和大小的列內容。

通過這樣做,您可以否定任何邊界來調用ContentControl模板中內置的ScrollViewer。基本上,因爲它沒有任何告訴它「嘿!你只能是X,Y尺寸,如果你超過這個尺寸,那麼我們需要滾動條。」是一種簡單的方式。所以你需要設置一個MaxWidth或者使用*或者其他的東西來調用ScrollViewer的邊界。

+0

Thx一噸的解釋克里斯。 知道第一列(gridview)的可見性爲true或摺疊。所以我想我不能使用Width =「N *」。 有沒有辦法讓ScrollVewer正確呈現(顯示其滾動條)並自動適應gridview的可見性? –

+0

@ A.D。我看到一個Grid,但不是一個GridView。如果一列中的內容的可見性切換爲「自動」寬度,那麼當它沒有孩子時它會崩潰。然後給出另一列'*',其中可以滾動內容的地方存在,它將在必要時調用滾動條。 –

+0

太棒了。 通過設置第一列的寬度爲自動和第二列的寬度爲1 *,它工作得很好。 Thx一噸克里斯,你搖滾:)並抱歉虛假的問題。 –