我想为WPF窗口设置动画。它设置为内容的大小,因此当内容更改时,窗口也会更改大小。不过,我不希望它捕捉到新的大小,当它确定需要新的大小时,我希望它可以通过动画在新旧值之间切换。
我该如何设置?
编辑: 我正在使用SizeToContent = WidthAndHeight“作为我的窗口的参数,并希望在它自动调整大小以显示不同内容时进行动画处理。
答案 0 :(得分:4)
您可以覆盖OnPropertyChanged
方法,并开始播放任何您喜欢的属性的动画。
例如,Width属性:
private DoubleAnimation widthAnimation;
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
if (e.Property == WidthProperty &&
!double.IsNaN((double)e.OldValue) &&
widthAnimation == null)
{
widthAnimation = new DoubleAnimation
{
Duration = TimeSpan.FromSeconds(1),
From = (double)e.OldValue,
To = (double)e.NewValue
};
widthAnimation.Completed += (s, a) =>
{
widthAnimation = null;
BeginAnimation(WidthProperty, null);
};
BeginAnimation(WidthProperty, widthAnimation);
}
else
{
base.OnPropertyChanged(e);
}
}