グリッドレイアウトを持つための基本概念証明書を作成しようとしています.2つの列に内容があり、3列目にGridSplitterのみがあります。一番左の列の内容はGridSplitterによってサイズが変更されますが、でもには、この同じ列を縮小/拡大するいくつかの折りたたみと展開ボタンがあります。基本的には、ビジュアルスタジオのソリューションエクスプローラのように、大きなものをドラッグするか、または単にピンを解除して折り畳むことができます。グリッド列内のコンテンツをアニメ化する
コードは次のとおりです。 LeftPanelは私がアニメーション化しようとしているものです。 LeftPanelでWidthを設定すると、グリッドスプリッタをドラッグするとグリッド列を塗りつぶすように自動的にサイズ変更されなくなります。 LeftPanelからWidthを外すか、またはAutoに設定すると、それはアニメーション化されますが、GridSplitterでサイズ変更されなくなりました。
私はGridColumnを直接アニメーション化するためにDependencyPropertyを追加することについてこのpostを見ましたが、GridSplitterをドラッグすると、ブレークします。
<UserControl.Resources>
<Storyboard x:Key="animShrink" x:Name="sbShrink">
<DoubleAnimation Storyboard.TargetName="leftPanel" Storyboard.TargetProperty="Width" To="50" Duration="0:0:2" />
</Storyboard>
<Storyboard x:Key="animGrow" x:Name="sbGrow">
<DoubleAnimation Storyboard.TargetName="leftPanel" Storyboard.TargetProperty="Width" To="200" Duration="0:0:2" />
</Storyboard>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="leftGridCol" Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Width="Auto" Margin="0,0,10,0" Background="Bisque" x:Name="leftPanel" >
<Button x:Name="btnShrink" Click="Button_Shrink" Height="20" VerticalAlignment="Top">Shrink</Button>
<Button x:Name="btnGrow" Click="Button_Grow" Height="20" Margin="0,30,0,0" VerticalAlignment="Top">Grow</Button>
</StackPanel>
<sdk:GridSplitter Grid.Column="0"></sdk:GridSplitter>
<StackPanel Grid.Column="2" Background="AliceBlue"></StackPanel>
</Grid>
ハンドラ
private void Button_Grow(object sender, RoutedEventArgs e) {
sbGrow.Begin();
}
private void Button_Shrink(object sender, RoutedEventArgs e) {
sbShrink.Begin();
}