WPF:如何冻结ListView标题行,以便它不会滚动屏幕

时间:2009-03-18 18:20:45

标签: .net wpf listview header gridviewcolumn

我是WPF开发的新手,我有一个ListView,我想冻结标题行,以便在用户滚动列表时不会滚动屏幕。 我继承的xaml代码看起来像这样:

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
  <DockPanel>
    <forms:BindableGrid DockPanel.Dock="Top" [code snipped] >
    <ListView.View>
      <GridView>
        <GridViewColumn Header="ColA" DisplayMemberBinding="{Binding ColA}" />
        <GridViewColumn Header="ColB" DisplayMemberBinding="{Binding ColB}" />
           [etc]

1 个答案:

答案 0 :(得分:13)

ListView已经这样做了 - 它有一个内部ScrollViewer,它只滚动项而不是标题。

问题是你的外ScrollViewer告诉它的孩子(DockPanel)它有无限的可用空间,而DockPanel告诉它的孩子,所以你的{{1}最终占用尽可能多的空间来显示所有项目,并且内部ListView没有显示。

如果你带走了你的外ScrollViewerScrollViewer应该认为它的空间有限,内部ListView会出现。

这显然会影响ScrollViewer中剩余的内容,所以我会看到会发生什么并从那里开始。