Ich speichere Spaltenbreiten beim Beenden der Anwendung und stelle sie beim Start wieder her. Alles funktioniert gut, es sei denn Benutzer Doppelklick Header. Dies würde dazu führen, dass die Spaltenbreite double.NaN
wird, was ich unter Flag für Autosizing verstehe. Dann habe ich Probleme.GridViewColumn Autosize funktioniert nur einmal
Bei der Untersuchung des Problems habe ich festgestellt, welche Einstellung Spaltenbreite NaN
wird die automatische Größenänderung aktivieren, aber nur einmal. Hier
ist ein Repro:
<ListView x:Name="listView">
<ListView.View>
<GridView>
<GridViewColumn Header="A" Width="NaN" />
</GridView>
</ListView.View>
</ListView>
Dann fügen Sie zwei Schaltflächen mit folgenden Klick-Handler:
void button1_Click(object sender, RoutedEventArgs e) => listView.Items.Add("abcd");
void button2_Click(object sender, RoutedEventArgs e) => listView.Items.Add("ABCDEFGHIJKL");
Durch Klicken button1
erste wird Spalte autosize "abcd"
zu passen. Klicken Sie dann auf nicht.
Warum? Gibt es eine Problemumgehung, um es immer automatisch zu skalieren oder um Benutzer mindestens zu deaktivieren, die Größenänderung (versucht this solution ohne Erfolg) zu deaktivieren?
registrieren Ist 'Width = "Auto"' statt von 'NaN' nicht funktionieren? – TyCobb
Dies verhindert, dass der Benutzer die Spaltengröße ändern kann: http://stackoverflow.com/questions/181956/prevent-user-from-resizing-columns-with-wpf-listview – mm8
@TyCobb, 'GridLength.Auto' ist für 'Grid's [' ColumnDefinition.Width'] (https://msdn.microsoft.com/en-us/library/system.windows.controls.columndefinition.width (v = vs.110) .aspx). Hier ist 'GridViewColumn.Width' vom' doppelten' Typ. – Sinatr