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