如何对元素进行动画处理,其中触发器是要动画化的属性上的数据更改

pin*_*2k4 5 c# wpf animation resize

我想为WPF窗口设置动画。它设置为内容的大小,因此当内容更改时,窗口也会更改大小。但是我不希望它捕捉到新的大小,当它确定需要新的大小时,我希望它可以通过动画在新旧值之间徘徊。

我该如何设置?

编辑:我正在使用SizeToContent = WidthAndHeight“作为我的窗口的参数,并希望在它自动调整大小以显示不同内容时进行动画处理。

Cle*_*ens 5

您可以重写该OnPropertyChanged方法并启动您喜欢的任何属性的动画。

例如,宽度属性:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)