Может быть немного взломать, но как насчет анимации MinWidth
и MaxWidth
на столбце? В основном установите их в соответствии с тем, что вы хотите сделать, и анимируйте MinWidth
для более высокого значения для расширения, а для анимации MaxWidth
- для более низкого значения для свертывания.
Вот полный xaml для анимации на MinWidth (я все еще считаю, что это несколько хакерски):
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SolveProblems.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Window.Resources>
<Storyboard x:Key="OnClick1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(DataGridColumn.MinWidth)" Storyboard.TargetName="dataGridCheckBoxColumn">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="80"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(DataGridColumn.MinWidth)" Storyboard.TargetName="dataGridCheckBoxColumn1">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="90"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="button">
<BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
</EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot">
<DataGrid x:Name="dataGrid" Margin="100,54,129.5,82.5">
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="dataGridCheckBoxColumn" Width="{Binding Columns[0].MinWidth, ElementName=dataGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridCheckBoxColumn x:Name="dataGridCheckBoxColumn1" Width="{Binding Columns[1].MinWidth, ElementName=dataGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Right" Margin="0,115,22,0" VerticalAlignment="Top" Width="75"/>
</Grid>