WPF: Estendi l’ultima colonna di GridView di ListView

Ho un ListView con un GridView con 3 colonne. Voglio che l’ultima colonna occupi la larghezza rimanente di ListView.

Questo non può essere fatto con XAML semplice, ma ci sono alcune soluzioni là fuori. Controllalo:

  • ListView Layout Manager
  • Dimensione della stella di una colonna ListView

C’è un modo per farlo usando il modello di comportamento

                                                                                          

Vedi il seguente link per alcuni esempi e link per maggiori informazioni http://lazycowprojects.tumblr.com/post/7063214400/wpf-c-listview-column-width-auto

E per vedere il codice sorgente. Controlla https://github.com/rolfwessels/lazycowprojects/tree/master/Wpf

veloce e sporco

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; } 

Che ne dici di usare uno stile

          

Non ho visto una soluzione XAML a una sola riga / semplice. Imposta una larghezza appropriata per la vista del progetto, quindi modifica la larghezza in base alla modifica della dimensione della finestra in questo modo:

 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: questa logica non cambia / passa la larghezza di una colonna quando un’altra viene ridimensionata. È ottimo per riempire una listview con l’ultima colonna.

Ho usato il suggerimento di Pale Ales con un piccolo cambiamento:

         

Non puoi rimuovere l’ultima colonna ma puoi fare poca illusione.