11

我是 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]
4

1 回答 1

16

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

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

如果你拿走你的外层ScrollViewerListView应该会发现它的空间有限,而内层ScrollViewer就会出现。

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

于 2009-03-18T19:32:03.290 回答