2012-05-19

Articles

ColumnWidthBehavior

 

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.

 

alt

 

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.