咦?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 对可动画处理的类的依赖项属性进行动画处理(有关如何使类成为可动画处理的类的更多信息,请参见动画概述)。 不过,由于图板演示是框架级别的功能,该对象必须属于 FrameworkElement 或 FrameworkContentElement 的 NameScope。
谁让咱没好好看msdn呢?
就说到这儿了,高手请保持淡定,本人表示感谢.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架