Файл MainWindow.xaml
<Window x:Class="WpfListViewAutoColumnWidth.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfListViewAutoColumnWidth"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="120" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Column="0" Grid.Row="0" >
<TextBox x:Name="MyText1" Width="380" />
<Button Click="Button_Click" Width="120" Margin="10">Add Text</Button>
</StackPanel>
<ListView Grid.Column="0" Grid.Row="1" x:Name="MyListView1" ItemsSource="{Binding MyData}" Margin="30">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=PlaceToBuy, Mode=OneWay}" Header="Address where to buy"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
C#
Файл MainWindow.xaml.cs
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
namespace WpfListViewAutoColumnWidth
{
public class MyShop
{
public string PlaceToBuy { get; set; }
}
public partial class MainWindow : Window
{
public ObservableCollection<MyShop> MyData { get; set; }
public MainWindow()
{
InitializeComponent();
// for binding
DataContext = this;
// set my data
MyData = new ObservableCollection<MyShop>();
// collection chnged
MyData.CollectionChanged += (a, b) =>
{
// auto column width for ListView
var listView = (MyListView1.View as GridView);
listView.Columns[0].Width = 0;
listView.Columns[0].Width = double.NaN;
};
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MyData.Add(
new MyShop() { PlaceToBuy = MyText1.Text }
);
}
}
}