WPF: как заморозить строку заголовка ListView, чтобы она не прокручивалась за пределы экрана - PullRequest
8 голосов
/ 18 марта 2009

Я новичок в разработке 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 Ответ

13 голосов
/ 18 марта 2009

ListView уже делает это - у него есть внутренний ScrollViewer, который прокручивает только элементы, а не заголовок.

Проблема в том, что ваш внешний ScrollViewer сообщает своему дочернему элементу (DockPanel), что он имеет доступное бесконечное пространство, и DockPanel сообщает это своим дочерним элементам, поэтому ваш ListView в итоге занимает столько пробел, поскольку он должен отображать все элементы, а внутренний ScrollViewer не отображается.

Если вы уберете свой внешний ScrollViewer, ListView должен поднять, что у него ограниченное пространство, и появится внутренний ScrollViewer.

Это, очевидно, повлияет на все остальное в вашем DockPanel, поэтому я посмотрю, что произойдет, и оттуда.

...