首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在触发器是要设置动画效果的属性上的数据更改的情况下对元素进行动画处理

如何在触发器是要设置动画效果的属性上的数据更改的情况下对元素进行动画处理
EN

Stack Overflow用户
提问于 2019-06-05 19:34:29
回答 1查看 132关注 0票数 5

我想让我的WPF窗口具有动画效果。它被设置为内容的大小,所以当内容改变时,窗口的大小也会改变。我不希望它捕捉到一个新的大小,但当它确定它需要一个新的大小时,我希望它通过一个动画在旧的和新的值之间移动。

我该如何设置?

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

EN

回答 1

Stack Overflow用户

发布于 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);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56459692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档