我想让我的WPF窗口具有动画效果。它被设置为内容的大小,所以当内容改变时,窗口的大小也会改变。我不希望它捕捉到一个新的大小,但当它确定它需要一个新的大小时,我希望它通过一个动画在旧的和新的值之间移动。
我该如何设置?
编辑:我正在使用“SizeToContent=WidthAndHeight”作为我的窗口的参数,并希望动画时,它自动大小,以不同的内容显示。
发布于 2019-06-05 19:53:52
您可以重写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);
}
}
https://stackoverflow.com/questions/56459692
复制相似问题