Die GridView die bei WPF mitgeliefert wird hat den meist unschönen Nebeneffekt, dass die Breite der Spalten zwar beim Hinzufügen des ersten Elementes automatisch angepasst wird, werden jedoch nachträglich weitere Einträge hinzugefügt, werden die Spaltenbreiten nicht mehr aktualisiert. Dies kann manchmal für den User der Anwendung sehr lästig sein.
Hier hab ich den mir einzigsten bekannten Workaround gepostet, etwas unschön aber er funktioniert. Beim Zuweisen von double.NaN an column.Width berechnet GridView automatisch die richtige Spaltenbreite. Ist column.Width allerdings schon auf double.NaN, wird der Wert nicht neu berechnet, weswegen zuerst auf column.AcutalWidth gesetzt wird und dann zurück.
Das Ganze sollte nach jeder Änderung der ItemsSource von der ListView aufgerufen werden, oder nur dann, wenn es wirklich erforderlich erscheint.
private void UpdateListViewColumns(ListView listView)
{
GridView gridView = listView.View as GridView;
if (gridView != null)
foreach (GridViewColumn column in gridView.Columns)
{
column.Width = column.ActualWidth;
column.Width = double.NaN;
}
}
Kommentare zum Snippet