我是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]
答案 0 :(得分:13)
ListView
已经这样做了 - 它有一个内部ScrollViewer
,它只滚动项而不是标题。
问题是你的外ScrollViewer
告诉它的孩子(DockPanel
)它有无限的可用空间,而DockPanel
告诉它的孩子,所以你的{{1}最终占用尽可能多的空间来显示所有项目,并且内部ListView
没有显示。
如果你带走了你的外ScrollViewer
,ScrollViewer
应该认为它的空间有限,内部ListView
会出现。
这显然会影响ScrollViewer
中剩余的内容,所以我会看到会发生什么并从那里开始。