Moh*_*dil 10 wpf animation datagrid rowdetails
任何人都可以帮助我在打开和关闭时动画WPF DataGrid行详细信息(例如,当选择行时幻灯片像手风琴一样打开,当未选择行时幻灯片关闭)?我需要一个简单的概念证明.
在此先感谢您的帮助 :)
H.B*_*.B. 12
详细但有效:
<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>
Run Code Online (Sandbox Code Playgroud)
编辑:通过在返回动画中DetailsVisibility手动处理RowStyle现在也可以.
请注意,一旦细节折叠,DataGrid的高度不会缩回,这可能有点问题.这是VirtualizingStackPanel的一个已知问题,如果你能负担得起,可以将其更改DataGrid.ItemsPanel为正常的StackPanel(如果你有大量数据,这将大大减慢应用程序,因为即使不可见,也会立即创建每一行).
另外:按Ctrl + A非常有趣.