Вот решение, которое работает, но оно немного вовлечено.Другие столбцы, кроме первого, должны иметь одинаковую ширину.вот XAML
ListView Name="ListView1" Grid.Column="0" Width="auto" SizeChanged="ListView1_SizeChanged">
<ListView.View>
<GridView>
<GridViewColumn Header="Column1" Width="200"/>
<GridViewColumn Header="Column2" Width="{Binding EqualSize}"/>
<GridViewColumn Header="Column3" Width="{Binding EqualSize}"/>
<GridViewColumn Header="Column4" Width="{Binding EqualSize}"/>
<GridViewColumn Header="Column5" Width="{Binding EqualSize}"/>
</GridView>
</ListView.View>
</ListView>
Теперь определите свойство «EqualSize» на основе фактической ширины ListView.Это определение должно быть обновлено в обработчике событий SizeChanged ListView.Вот код:
private double _equalSize;
public double EqualSize {
get { return _equalSize; }
set {
if (_equalSize!=value) {
_equalSize = value;
RaisePropertyChanged();
}
}
}
private void ListView1_SizeChanged(object sender, SizeChangedEventArgs e) {
EqualSize = (colDef.ActualWidth - 200) / 4;
}// The magic number 200 is the size of the first column and 4 is the number of columns that share the same size
Это можно реализовать из файла с выделенным кодом (рекомендуется) или из класса модели представления