我需要动画窗口大小显示3个不同的意见。但我已经撞上了一个只有2个视图的街区。因此,我运行1个动画来增加按钮单击时的宽度和高度,然后我想将高度和宽度设置为不同的值,但只有宽度被设置为动画,高度保持增加。我尝试了不同的方法来“停止”第一个动画,但它没有帮助。
所需的行为是用动画操作窗口大小-小->中->大->小…但仍然让用户能够在大模式下调整窗口的高度和宽度,而小模式是固定大小,中等模式只能调整高度。
几乎不是一个火箭科学的任务,但它不工作。
XAML:
<Window.Resources>
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(FrameworkElement.Width)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="450"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(FrameworkElement.Height)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="800"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Storyboard2">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(FrameworkElement.Width)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="80"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(FrameworkElement.Height)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="400"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
C#
Storyboard sb1, sb2;
private void Button_Click(object sender, RoutedEventArgs e)
{
sb1 = FindResource("Storyboard1") as Storyboard;
sb1.Begin(this, true);
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
sb1.Stop();
sb2 = FindResource("Storyboard2") as Storyboard;
sb2.Begin(this, true);
}
1条答案
按热度按时间5gfr0r5j1#
问题是您试图同时设置宽度和高度的动画。在第一个动画之后运行第二个动画,方法是增加
KeyTime
:或者尝试将
SizeToContent
属性设置为WidthAndHeight
,指定根面板的大小,然后按照建议的here设置此面板的动画。