【发布时间】:2015-05-14 23:46:30
【问题描述】:
我正在尝试为我创建的 UserControl 的位置设置动画。 我的问题与 MSDN 上提出的这个问题非常相似,遗憾的是没有答案。
总而言之,我创建了一个名为“Position”的 Point 类型依赖属性,用于指定 UserControl 在 UI 上的位置,并希望将 UserConrol 设置为动画到新位置。
我的问题是我相信的一种语法,我不确定以我的 UserControl 属性为目标的正确语法(在代码隐藏中)。
public class SubContainer : Control
{
public static readonly DependencyProperty PositionProperty;
static SubContainer()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(SubContainer),
new FrameworkPropertyMetadata(typeof(SubContainer)));
PositionProperty = DependencyProperty.Register(
"Position",
typeof(Point),
typeof(SubContainer),
new PropertyMetadata(new Point(0, 0)));
}
public Point Position
{
get { return (Point)GetValue(PositionProperty); }
set { SetValue(PositionProperty, value); }
}
然后是我的动画:
public void BoxTransition()
{
Point destination = new Point(70, 300);
SubContainer box = (MainContent.Children[0] as Container).Children[0] as SubContainer;
PointAnimation transition = new PointAnimation();
TimeSpan timespan = TimeSpan.FromSeconds(2);
this.RegisterName("Target", box.Position);
Transition.From = box.Position;
Transition.To = destination;
Storyboard.SetTargetName(transition, "Target");
Storyboard.SetTargetProperty(transition, new PropertyPath(box.Position));
Storyboard bTransition = new Storyboard();
bTransition.Children.Add(transition);
bTransition.Begin();
}
我收到以下错误:
对象“System.Windows.Point”不能用作 PropertyPath 的访问器参数。访问器参数必须是 DependencyProperty、PropertyInfo 或 PropertyDescriptor。
任何为我的控件设置动画的替代方法也将不胜感激!
【问题讨论】:
-
显示您的代码以便我们为您提供帮助。没有它我们如何发现语法错误?
-
好的,所以我想我越来越近了。据此:social.msdn.microsoft.com/Forums/vstudio/en-US/… 我需要定位属性的来源,而不是实例。
-
所以这比我预期的要难,我现在的计划是在 xaml 中构建我的界面,然后使用 Expressions Blend 来尝试制作和故事板。
标签: c# wpf animation storyboard