首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF DataGrid垂直上浆

WPF DataGrid垂直上浆
EN

Stack Overflow用户
提问于 2010-06-19 21:11:14
回答 1查看 1.6K关注 0票数 4

我想在一个DataGrid中放置一个HeaderedContentControl,但是DataGrid没有一个垂直滚动条。它的大小似乎是一次容纳所有行,底部从视野中消失。

如果我把同样的DataGrid放在边框里,我就会得到我想要的行为。

我把它简化为这个最小的例子:

代码语言:javascript
复制
<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有关,但我想我已经把它扩大了一些,而且有一个更好的答案。
  • 使用ScrollViewer绕过DataGrid并不是一个解决方案,因为它会将头部滚动到视线之外。
  • I使用WPF4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-19 21:41:41

您可以看到这种行为,因为HeaderedContentControl的默认模板是使用StackPanel来显示其内容。因为StackPanel的大小是它的子元素,所以DataGrid扩展了它的高度,使它的每一项都显示在没有滚动条的屏幕上。然后,由于HeaderedContentControl的大小,将裁剪显示。

将模板更改为使用GridDockPanel可以解决此问题:

代码语言:javascript
复制
<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>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3077249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档