一直试图创建动画来动态调整高度.我发现这个信息有所帮助,但是当我尝试使用它时,我收到一个错误:'System.Windows.Media.Animation.DoubleAnimation'不能使用'NaN'的默认目标值.
如果我指定高度,我会得到该错误.
样式:
<Style x:Key="bdrSlideIn"
TargetType="{x:Type Border}">
<Style.Resources>
<Storyboard x:Key="storyBoardIn">
<DoubleAnimation BeginTime="00:00:00"
From="0"
Duration="00:00:00.65"
Storyboard.TargetName="{x:Null}"
Storyboard.TargetProperty="(FrameworkElement.Height)"
DecelerationRatio="1" />
</Storyboard>
<Storyboard x:Key="storyBoardOut">
<DoubleAnimation BeginTime="00:00:00"
To="0"
Duration="00:00:00.65"
Storyboard.TargetName="{x:Null}"
Storyboard.TargetProperty="(FrameworkElement.Height)"
AccelerationRatio="1" />
</Storyboard>
</Style.Resources>
<Style.Triggers>
<DataTrigger Binding="{Binding SearchExecuted}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource storyBoardIn}"
Name="SlideStoryboard" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource storyBoardOut}" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
边界:
<Border VerticalAlignment="Top"
Style="{StaticResource bdrSlideIn}">
<WPFToolKit:DataGrid Name="dgSearchResults"
ItemsSource="{Binding SearchResults}"
MaxHeight="280"
VerticalAlignment="Top">...
Run Code Online (Sandbox Code Playgroud)
如果你想保持Height动态,那么就不能直接为Height设置动画:正如你所见,除非你明确指定它,否则WPF会尝试插值到NaN.
相反,为元素提供LayoutTransform <ScaleTransform />,并为该转换的ScaleX和ScaleY参数设置动画.
| 归档时间: |
|
| 查看次数: |
4145 次 |
| 最近记录: |