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

ham*_*mcn 9 .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]
Run Code Online (Sandbox Code Playgroud)

Rob*_*nee 14

ListView已经这样做了-它有一个内部的ScrollViewer,只有滚动的物品,而不是头.

问题是你的外部ScrollViewer告诉它的孩子(DockPanel它)有无限的可用空间,并DockPanel告诉它的孩子,所以你ListView最终占用了所需的空间,以显示所有项目而内部ScrollViewer没有出现.

如果你拿走你的外表ScrollViewer,ListView应该拿起它有限的空间,内部ScrollViewer会出现.

这显然会影响你的其他东西DockPanel,所以我会看到会发生什么并从那里开始.