Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
673 views
in Technique[技术] by (71.8m points)

.net - WPF: How to freeze a ListView header row so that it won't scroll off the screen

I am new to WPF development, I have a ListView and I want to freeze the header row so that it won't scroll off the screen when the user scrolls the list. The xaml code, I have inherited, looks something like this:

<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]
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The ListView already does this - it has an internal ScrollViewer that only scrolls the items and not the header.

The issue is that your outer ScrollViewer tells its child (the DockPanel) that it has infinite space available, and the DockPanel tells this to its children, so your ListView ends up taking up as much space as it needs to display all the items and the internal ScrollViewer doesn't show up.

If you take away your outer ScrollViewer, the ListView should pick up that it has limited space, and the internal ScrollViewer will appear.

This will obviously affect the rest of the stuff in your DockPanel, so I'd see what happens and go from there.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...