WPF DataGrid 行の詳細を開いたり閉じたりしたときにアニメーション化するのを手伝ってくれる人はいますか (たとえば、行が選択されているときはアコーディオンのようにスライドが開き、行が選択されていないときはスライドが閉じます)。簡単な概念実証が必要です。
よろしくお願いします:)
WPF DataGrid 行の詳細を開いたり閉じたりしたときにアニメーション化するのを手伝ってくれる人はいますか (たとえば、行が選択されているときはアコーディオンのようにスライドが開き、行が選択されていないときはスライドが閉じます)。簡単な概念実証が必要です。
よろしくお願いします:)
冗長ですが機能します:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="DetailsVisibility" Value="Collapsed"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="DetailsVisibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="DetailsVisibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0.4" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Grid>
<Grid.LayoutTransform>
<ScaleTransform ScaleY="0"/>
</Grid.LayoutTransform>
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="LayoutTransform.ScaleY">
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseInOut" />
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="LayoutTransform.ScaleY">
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseInOut" />
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.Children>
<TextBlock Text="Lorem ipsum dolor sit"/>
</Grid.Children>
</Grid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
編集:リターンアニメーションDetailsVisibility
で手動で処理することにより、これも機能するようになりました。RowStyle
詳細が折りたたまれても、DataGridの高さは縮小されないことに注意してください。これは、少し問題になる可能性があります。これはVirtualizingStackPanelの既知の問題です。余裕があればDataGrid.ItemsPanel
、通常のStackPanelに変更できます(データが多い場合は、表示されていなくてもすべての行がすぐに作成されるため、アプリケーションの速度が大幅に低下します。 )。
また、Ctrl+Aを押すのはとても楽しいです。