2017-02-21 2 views
1

Ich suche nach Beispielen, wie eine DataGrid-Spaltenbreite programmgesteuert in Auto geändert wird, während der Text aus der Spaltenüberschrift ignoriert wird (wenn der Headerinhalt länger ist als der längste Inhalt von Säulenzellen).Programmatische Änderung der DataGrid-Spaltenbreite zur längsten Größe des Zelleninhalts

+0

Sie DataGridView in Windows Form? –

+0

Set DataGridColum Width = "Auto" muss nicht in Code-Behind eingestellt werden. Basierend auf der Kopfzeilengröße wird die Größe angepasst – Ragavan

Antwort

1

try genutztes Objekt sizeToCells (von MSDN)

wie dies für einzelne Spalte:

grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells); 
0

Anstatt die Header Eigenschaft der Spalte in der XAML-Markup wie diese Einstellung:

<DataGrid x:Name="dg"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" Header="some very long header some very long header some very long header" /> 
     <DataGridTextColumn Binding="{Binding}" Header="short" /> 
    </DataGrid.Columns> 
</DataGrid> 

.. Sie könnten es programmgesteuert einstellen, sobald die DataGrid geladen wurde:

<DataGrid x:Name="dg" Loaded="dg_Loaded"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" /> 
     <DataGridTextColumn Binding="{Binding}" Header="short" /> 
    </DataGrid.Columns> 
</DataGrid> 

private void dg_Loaded(object sender, RoutedEventArgs e) 
{ 
    dg.Columns[0].Width = new DataGridLength(dg.Columns[0].ActualWidth); 
    dg.Columns[0].Header = "some very long header some very long header some very long header"; 
} 

Dann wird die Breite des Spalts auf dem Zellinhalt nur von der Länge, aber nicht von dem Header basieren.

Verwandte Themen