Articles
In WPF everything can be dynamic sized by the content and windows size. But unfortunatelly the ListView Columns not. This behavior brings this auto size functionality. This behavior attaches this functionality to all controls with a GridViewHeaderRowPresenter.

Usage
<UserControl x:Class="DW.Interactivity.Demo.ColumnWidthBehaviorControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Interactivity="http://schemas.my-libraries.de/wpf/interactivity">
<ListView ItemsSource="{Binding Customers}"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Interactivity:ColumnWidthBehavior.AutoSize="ByControl">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Family Name" DisplayMemberBinding="{Binding FamilyName}" />
</GridView>
</ListView.View>
</ListView>
</UserControl>
using System.Windows.Controls;
using DW.Interactivity.Demo.Data;
using DW.SharpTools;
namespace DW.Interactivity.Demo
{
public partial class ColumnWidthBehaviorControl : UserControl
{
public ColumnWidthBehaviorControl()
{
InitializeComponent();
DataContext = this;
Customers = new EnhancedObservableCollection<Customer>();
Customers.AddRange(CustomerRepository.CreateDummyData());
}
public EnhancedObservableCollection<Customer> Customers { get; set; }
}
}
Note
This control needs the DW.SharpTools.