WPF: Come bloccare intestazione di colonna nel datagrid

Come posso congelare la mia intestazione di colonna in una DataGrid nel mio WPF Finestra in modo che quando ho scorrere verso il basso, l’intestazione è ancora visibile.

[Modifica]

Ecco il mio XAML:

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Visible">
    <DataGrid Name="ModelsGrid" Background="Transparent" Foreground="Black"  RowHeight="30" ColumnWidth="100"  AutoGenerateColumns="False" ItemsSource="{Binding}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Property ID" Binding="{Binding Path=Id}" />
            <DataGridTextColumn Header="Name" Width="Auto" Binding="{Binding Path=PropertyName}" />
            <DataGridTextColumn Header="Description" Width="Auto" Binding="{Binding Path=Description}" />
            <DataGridTextColumn Header="Access" Width="Auto" Binding="{Binding Path=Accessibility}" />
            <DataGridTextColumn Header="Type" Width="Auto" Binding="{Binding Path=Type}" />
            <DataGridTextColumn Header="Category" Width="Auto" Binding="{Binding Path=Category}" />
        </DataGrid.Columns>
    </DataGrid>
</ScrollViewer>

[Modifica]

Ho dovuto sbarazzarsi di ScrollViewer ed è risolto.

  • Quando si scorre DataGrid, intestazione di colonna è bloccato di default (se è solo DataGrid di per sé, non DataGrid in ScrollViewer). Ci mostri il tuo codice XAML?
  • Il scrollviewer è stato quello di rovinare tutto. Grazie @AlexButenko.
InformationsquelleAutor for-each | 2013-04-25



4 Replies
  1. 16

    Ho dovuto sbarazzarsi di ScrollViewer ed è risolto.

    • Come fa a scorrere poi? (Ho provato la stessa cosa con un progetto e il DataGrid non scorrere più).
    • Rimuovere ScrollViewer e Aggiungere HorizontalScrollBarVisibility=”Visibile” nella tua DataGrid
  2. 0

    Datagrid hanno FreeColumnCount proprietà – set a 1, e vedere cosa succede.

    • Come questa può essere definita la questione, che è di circa Zero Colonna Intestazione, non di Colonna? Hai letto la domanda?
    • Riferimento: FrozenColumn è orizzontale scorrimento – spilli un numero di colonne a sinistra, e lascia il resto scorrere come necessario.
  3. 0

    Si fa con nidificato di scorrimento spettatori. Ecco il Template setter per un Style di TargetType="DataGrid":

    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="DataGrid">
    
          <DockPanel Dock="Top" HorizontalAlignment="Stretch">
    
            <ScrollViewer DockPanel.Dock="Top" 
                          CanContentScroll="False" 
                          HorizontalScrollBarVisibility="Disabled" 
                          VerticalScrollBarVisibility="Disabled" 
                          Focusable="false" 
                          Padding="{TemplateBinding Padding}">
    
              <DockPanel Dock="Top" VerticalAlignment="Stretch">
                <DataGridColumnHeadersPresenter DockPanel.Dock="Top" Grid.Row="0"/>
                <ScrollViewer HorizontalScrollBarVisibility="Hidden" 
                              DockPanel.Dock="Top" 
                              VerticalScrollBarVisibility="Auto" 
                              VerticalAlignment="Stretch" 
                              CanContentScroll="False" 
                              Focusable="false" 
                              Padding="{TemplateBinding Padding}">
                  <ItemsPresenter VerticalAlignment="Stretch"/>
                </ScrollViewer>
              </DockPanel>
            </ScrollViewer>
          </DockPanel>
    
        </ControlTemplate>
      </Setter.Value>
    </Setter>

    Naturalmente, il ScrollViewer può anche essere progettato per riflettere il design dell’interfaccia utente.

Lascia un commento