首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义DependencyProperty不更新动画

自定义DependencyProperty不更新动画
EN

Stack Overflow用户
提问于 2014-10-03 13:06:33
回答 1查看 174关注 0票数 1

我正在将一个应用程序从Windows 8 (Silverlight)移植到WinRT-XAML。我已经创建了一个自定义DependecyProperty,我正在使用DoubleAnimation动画。这只在WP8上有效,但在WinRT版本上不起作用。

属性本身也能工作;如果我在代码中手动设置它的值,就会调用更改回调,并且一切都正常。动画似乎也在运行;它持续指定的持续时间,然后使用AnimCompleted回调完成--但是DependencyProperty没有更新,它的更改回调也没有被调用。我创建了一个计时器,用于在动画运行时打印出动画属性的值,并且它保持不变。

我做错了什么?与WinRT相比,WP8有什么不同?

财产定义:

代码语言:javascript
运行
复制
public static readonly DependencyProperty MyPropProperty =
    DependencyProperty.Register( "MyProp", typeof(double), typeof(MyClass),
                                 new PropertyMetadata( 1d, OnMyPropChanged ));

public double MyProp
{
    get { return (double)GetValue( MyPropProperty ); }
    set { SetValue( MyPropProperty, value ); }
}

private static void OnMyPropChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
    var m = d as MyClass;
    System.Diagnostics.Debug.WriteLine( "Value now: " + m.MyProp );
}

XAML:

代码语言:javascript
运行
复制
<Storyboard x:Name="AnimSB" Completed="AnimCompleted">
    <DoubleAnimation x:Name="Anim" Storyboard.TargetProperty="MyProp" Duration="0:0:1.00">
        <DoubleAnimation.EasingFunction>
            <QuadraticEase EasingMode="EaseInOut"/>
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
</Storyboard>

启动动画的代码:

代码语言:javascript
运行
复制
MyProp = 2.0; // this causes a call to OnMyPropChanged just fine
Anim.From = 2.0;
Anim.To = 1.0;
Storyboard.SetTarget( Anim, this );
AnimSB.Begin();
// after this, MyProp stays constant, OnMyPropChanged is not called,
// and AnimCompleted is called after exactly one second.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-03 14:51:37

您需要在动画上将EnableDependentAnimation设置为true。其原因是不鼓励在UI线程上更改动画属性(依赖属性),从而产生不稳定的动画。建议只对独立属性(如RenderTransform属性或Opacity属性)进行动画化,而不使用依赖属性(如WidthMarginCanvas.X或自定义属性)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26179519

复制
相关文章

相似问题

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