Наконец, я добавил в расширитель события Collapsed и Expanded:
<Expander Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="1"
Width="25"
Collapsed="Expander_Collapsed"
Expanded="Expander_Expanded"
ExpandDirection="Left"
IsExpanded="False"
HorizontalAlignment="Right">
<Expander.Header>
<TextBlock Text="Settings">
<TextBlock.LayoutTransform>
<RotateTransform Angle="-90"/>
</TextBlock.LayoutTransform>
</TextBlock>
</Expander.Header>
</Expander>
И затем из представленного кода:
private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
ColumnDefinition c = this.Grid.ColumnDefinitions[1];
c.Width = new GridLength(0, GridUnitType.Auto);
this.Grid.ColumnDefinitions.RemoveAt(1);
this.Grid.ColumnDefinitions.Insert(1, c);
}
private void Expander_Expanded(object sender, RoutedEventArgs e)
{
ColumnDefinition c = this.Grid.ColumnDefinitions[1];
c.Width = new GridLength(0.47, GridUnitType.Star);
this.Grid.ColumnDefinitions.RemoveAt(1);
this.Grid.ColumnDefinitions.Insert(1, c);
}
Я думаю, что это не нарушает паттерн MVVM, так какэто задача для просмотра.