咦?Storyboard在WPF变换中怎么不能用了?

    这几天写代码的时候一直被一个奇怪的现象困扰:明明是看起来没有任何问题的C#代码,目的是实现在程序中水平移动一个按钮。代码是如此写的:

            Storyboard s = new Storyboard();
            DoubleAnimation da = new DoubleAnimation();
            da.To = 100;
            da.Duration = TimeSpan.FromSeconds(0.1);
            Storyboard.SetTarget(da, t);  //此处t为TranslateTransform对象
            Storyboard.SetTargetProperty(da,new PropertyPath(TranslateTransform.XProperty));
            s.Children.Add(da);
            s.Begin();


想破脑袋也没发现那里不对.于是我将这段代码转换成xaml:

        <Storyboard x:Key="storyboard">
            <DoubleAnimation Storyboard.TargetName="t" Storyboard.TargetProperty="X"
                             Duration="00:00:0.1"  To="100" />
        </Storyboard>
 


这样便运行起来了,但使用xaml并不能够达到目的.后来,经过漫长寻找答案的过程,终于得出了结果,代码应当是这么写:

            Storyboard s = new Storyboard();
            DoubleAnimation da = new DoubleAnimation();
            da.To = 100;
            da.Duration = TimeSpan.FromSeconds(0.1);
            Storyboard.SetTarget(da, b);//此处b为Button对象
            Storyboard.SetTargetProperty(da, new PropertyPath("RenderTransform.X"));
            s.Children.Add(da);
            s.Begin();

 


至于原因,msdn Library上已经阐述的很清楚了:

http://msdn.microsoft.com/zh-cn/library/ms742868.aspx

可以使用 Storyboard 对可动画处理的类的依赖项属性进行动画处理(有关如何使类成为可动画处理的类的更多信息,请参见动画概述)。 不过,由于图板演示是框架级别的功能,该对象必须属于 FrameworkElementFrameworkContentElementNameScope

 

谁让咱没好好看msdn呢?

 

就说到这儿了,高手请保持淡定,本人表示感谢.

转载于:https://www.cnblogs.com/Wade-/archive/2012/07/16/2594092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值