2010-06-19 5 views
3

DataGrid를 HeaderedContentControl 내에 배치하려고하지만 DataGrid가 세로 스크롤 막대를 가져 오지 않습니다. 한 번에 모든 행을 담을 수있는 크기로 보이고 아래쪽은보기에서 사라집니다.WPF DataGrid 세로 ​​크기 조정

경계선 elelemnt에 동일한 DataGrid를 배치하면 원하는 동작을 얻습니다.

나는이 최소한의 예에 감소

:

<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

  • 를 사용하여 작업 할 수 없었다

    • this question 그러나 나는 그것을 조금 넓혔으며 더 좋은 대답이 있다고 생각한다.
    • DataGrid 주위에서 ScrollViewer를 사용하면 헤더가 보이지 않게 스크롤되므로 해결 방법이 아닙니다. HeaderedContentControl에 대한 기본 템플릿이 그 내용을 보여주기 위해 StackPanel을 사용하고 있기 때문에 나는 WPF4
  • 답변

    5

    을 사용하고

  • 는이 동작을보고있다. StackPanel은 자식 크기를 사용하기 때문에 DataGrid은 스크롤바가없는 모든 항목을 화면에 표시하도록 높이를 확장합니다. 디스플레이는 HeaderedContentControl의 크기 때문에 잘립니다. 난 그냥이에 따라 워킹있어,

    <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> 
    
  • +0

    감사하십시오 Grid 또는 DockPanel를 사용하는 템플릿을 변경

    이 문제를 해결합니다. –