我只有C / C ++的经验,只是转到C#和WPF。我想创建一个动画来移动组件(例如图像),但我不知道为什么以下是非法的:
ThicknessAnimation a = new ThicknessAnimation(...);
Image1.BeginAnimation(Image1.Margin, a); // illegal. Image.Margin illegal too
这似乎不能在这里使用保证金。当然创建一个计时器并为手动创建厚度对象手动可以工作,但这将是沉闷的,如果可以动画,它将更优雅。
这里需要故事板吗?我听说有人说创建一个故事板,你可以使用Margin属性,但我根本不知道故事板,也无法理解。感谢
答案 0 :(得分:3)
您可以为依赖项属性设置动画,而不是常规属性,因此请尝试使用Image.MarginProperty。
这些是您要定位的类型或基本类型中的静态字段。
public static readonly DependencyProperty MarginProperty
在您的情况下,它在FrameworkElement中定义。
参考文献:
http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.marginproperty.aspx
http://msdn.microsoft.com/en-us/library/ms590761.aspx
对于更复杂的动画,您需要一个故事板:
通过Storyboard对象,您可以将影响各种对象和属性的时间轴组合到一个时间轴树中,从而轻松组织和控制复杂的计时行为。
http://msdn.microsoft.com/en-us/library/ms742868.aspx
编辑:
在查看Intellisense时,您可以看到关联的依赖属性位于传统属性之下。
我之前提到你必须使用Image.MarginProperty,但实际上你可以忽略'Image'。部分因为对象确实已经从该基类型继承,比如动画'this':