When I change column header from longer to shorter one, the width not change
here is demo:
first a BindingData to transfer Header property to GridViewColumn Header property:
sealed class BindingData : Freezable{ protected override Freezable CreateInstanceCore() { return new BindingData { Data = this.Data }; } public object Data { get { return (object)this.GetValue(DataProperty); } set { this.SetValue(DataProperty, value); } } public static readonly DependencyProperty DataProperty = DependencyProperty.Register( "Data", typeof(object), typeof(BindingData));}
ViewModel:
sealed class ViewModel : ViewModelBase{ private string header = ""; public string Header { get { return this.header; } set { if (this.header != value) { this.header = value; NotifyPropertyChanged("Header"); } } } public IEnumerable<string> HeaderSource { get { return Enumerable.Range(1, 3) .Select(item => "Header " + item) .Concat(Enumerable.Range(3, 5) .Select(item => "Very Very Very Long Header " + item)); } } public IEnumerable<string> RowSource { get { return Enumerable.Range(1, 16) .Select(item => "Data " + item); } }}
View:
<StackPanel> <StackPanel.Resources> <local:BindingData x:Key="HeaderBindingData" Data="{Binding Header}" /> </StackPanel.Resources> <ComboBox ItemsSource="{Binding HeaderSource}" SelectedValue="{Binding Header, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> <telerik:RadGridView ItemsSource="{Binding RowSource}"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding}" Header="{Binding Data, Source={StaticResource HeaderBindingData}}" /> </telerik:RadGridView.Columns> </telerik:RadGridView></StackPanel>
Telerik.Windows.Controls.GridView.dll version is under 2014.2
