簡體   English   中英

WPF DataGrid垂直大小

[英]WPF DataGrid vertical sizing

我想將一個DataGrid放在HeaderedContentControl中,但DataGrid沒有得到一個垂直的Scrollbar。 它看起來大小可以同時容納所有行,底部從視圖中消失。

如果我將相同的DataGrid放在Border elelemnt中,我會得到我想要的行為。

我把它簡化為這個最小的例子:

<Grid>
    <HeaderedContentControl  Margin="10,10,10,161" >
        <HeaderedContentControl.Header >test</HeaderedContentControl.Header>

        <!-- I want it Here but then no Vertical Scroll-->
        <DataGrid ItemsSource="{Binding Path=AllData}"                      
                  AutoGenerateColumns="True"  />
    </HeaderedContentControl>

    <Border Margin="10,169,10,10">                                
        <!--Here it does scroll -->
        <DataGrid ItemsSource="{Binding Path=AllData}" 
                  AutoGenerateColumns="True"  />
    </Border>                      
</Grid>

幾點說明:

  • 我無法使用HeaderedContentControl.VerticalContentAlignment使其工作
  • 這個問題涉及到這個問題,但我想我已經擴大了它一下,有一個更好的答案。
  • 在DataGrid周圍使用ScrollViewer不是一個解決方案,因為它將標題滾動到視線之外。
  • 我正在使用WPF4

您看到此行為是因為HeaderedContentControl的默認模板使用StackPanel來顯示其內容。 由於StackPanel采用其子項的大小,因此DataGrid會擴展其高度,使其所有項目都顯示在屏幕上而不顯示滾動條。 然后,由於HeaderedContentControl的大小,將裁剪顯示。

更改模板以使用GridDockPanel解決了這個問題:

<Style TargetType="{x:Type HeaderedContentControl}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type HeaderedContentControl}">
        <DockPanel>
          <ContentPresenter DockPanel.Dock="Top" ContentSource="Header" />
          <ContentPresenter />
        </DockPanel>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM