2012-11-29 14 views
11

Ho un DataGrid con molte colonne.Larghezza colonna DataGrid WPF Auto e barra di scorrimento

Voglio Width="Auto" con la barra di scorrimento che mostra tutto se la finestra è più stretta di tutte le colonne. Se la finestra è più ampia, voglio che le colonne occupino spazio vuoto, quindi non c'è spazio morto.

Fondamentalmente voglio che la larghezza minima della colonna si adatti completamente al contenuto o all'intestazione. E espandersi a dimensioni maggiori se la finestra è più larga.

+0

puoi pubblicare ciò XAML avete finora? –

+0

Se la larghezza è impostata su auto, la barra di scorrimento non viene mai visualizzata. –

+0

@EduardoBrites domanda modificata per aggiungere ulteriori chiarimenti – Brent

risposta

8

in XAML set DataGrid ColumnWidth="Auto"

Nel costruttore UserControl aggiungere

dataGrid.Loaded += (s, e) => { // Column widths 
    dataGrid.Columns.AsParallel().ForEach(column => { 
     column.MinWidth = column.ActualWidth; 
     column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
    }); 
}; 

Utilizzando questo con un DataGrid personalizzato e funziona alla grande.

+0

Si potrebbe anche guardare alla proprietà TextRenderer.MeasureText e impostare la larghezza di banda uguale ad esso. –

+0

-1 non verrà compilato con standard WPF e .NET 4.5; non molto utile per dire che funziona con un ** personalizzato ** ** Datagrid ** se il codice non viene fornito – MickyD

+2

-1 anche ** AsParallel() ** è generalmente un grande no no quando si tratta di elementi della GUI – MickyD

22

Per "riempire" tutto lo spazio orizzontale in WPF DataGrid come specificato, assicurarsi di avere queste proprietà impostate in XAML:

<DataGrid 
    HorizontalAlignment="Stretch" 
    HorizontalContentAlignment="Stretch" 
    ColumnWidth="*" /> 
+2

ColumnWidth = "*" funziona perfettamente :) –

+2

Questa soluzione impedisce alla griglia di ottenere una barra di scorrimento orizzontale nel caso in cui non sia sufficientemente ampia da adattarsi al contenuto di tutte le colonne. – dlf

Problemi correlati