WPF: Extienda la última columna de GridView de ListView

Tengo un ListView con un GridView con 3 columnas. Quiero que la última columna ocupe el ancho restante de ListView.

Eso no se puede hacer con un simple XAML, pero hay algunas soluciones por ahí. Mira esto:

  • ListView Layout Manager
  • Tamaño de estrella de una columna ListView

Hay una manera de hacerlo usando un patrón de comportamiento

                                                                                          

Vea el siguiente enlace para algunos ejemplos y enlace para leer más http://lazycowprojects.tumblr.com/post/7063214400/wpf-c-listview-column-width-auto

Y para ver el código fuente. Consulte https://github.com/rolfwessels/lazycowprojects/tree/master/Wpf

rápido y sucio

xaml:

          

cs:

 private void ListView_SizeChanged(object sender, SizeChangedEventArgs e) { UpdateColumnsWidth(sender as ListView); } private void ListView_Loaded(object sender, RoutedEventArgs e) { UpdateColumnsWidth(sender as ListView); } private void UpdateColumnsWidth(ListView listView) { int autoFillColumnIndex = (listView.View as GridView).Columns.Count - 1; if (listView.ActualWidth == Double.NaN) listView.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); double remainingSpace = listView.ActualWidth; for (int i = 0; i < (listView.View as GridView).Columns.Count; i++) if (i != autoFillColumnIndex) remainingSpace -= (listView.View as GridView).Columns[i].ActualWidth; (listView.View as GridView).Columns[autoFillColumnIndex].Width = remainingSpace >= 0 ? remainingSpace : 0; } 

¿Qué tal usar un estilo?

          

No he visto una solución XAML de una sola línea / simple. Establezca un ancho que sea apropiado para la vista de diseño, y luego modifique el ancho en el cambio de tamaño de la ventana como este:

 Private Sub winMain_SizeChanged(sender As Object, e As SizeChangedEventArgs) Handles Me.SizeChanged TryCast(lvwDownload.View, GridView).Columns(3).Width = lvwDownload.ActualWidth - 340 End Sub 

NOTA: Esta lógica no cambia / desplaza el ancho de una columna cuando se cambia el tamaño de otra. Es genial para llenar una vista de lista con la última columna.

Utilicé la sugerencia de Pale Ales con un pequeño cambio:

         

No se puede eliminar la última columna, pero puedes hacer una pequeña ilusión.