【问题标题】:Trouble with static vs non-static stuff in dependency properties... should I even be using DPs?依赖属性中静态与非静态内容的问题......我什至应该使用 DPs 吗?
【发布时间】:2010-11-29 17:51:41
【问题描述】:

所以我制作了一个仪表,它可以在顺时针或逆时针方向上显示动画。每隔一段时间,新数据就会进入我设置的两个依赖属性。当这些属性中的数据发生变化时,我想对这两个值进行一些计算,以确定仪表的指针将旋转哪个方向(以及旋转多少)。

我已经让旋转代码工作了,我编写了一个函数(全部用 C# 编写),它获取旋转的开始角度、结束角度和持续时间。旋转功能有效,我可以输入值并观察指针旋转。

当任何一个依赖属性发生变化时,我不知道该怎么做是调用这个动画函数。将我的旋转函数设为静态是不合适的,因为旋转调用最终可能是特定于实例的。

换句话说,我想要实现的是PropertyChanged->计算新位置/速度->构建故事板并运行动画。

我之所以使用依赖属性而不是标准属性是因为它们绑定到 xaml 的控件之外。

谢谢!

        private void AnimatePointer(double startAngle, double endAngle, TimeSpan length, string pointerName)
    {
        DoubleAnimation handRotation = new DoubleAnimation();
        handRotation.From = startAngle;
        handRotation.To = endAngle;
        handRotation.Duration = new Duration(length);
        Storyboard.SetTargetName(handRotation, pointerName);

        DependencyProperty[] propertyChain =
            new DependencyProperty[]
            {
                Rectangle.RenderTransformProperty,
                TransformGroup.ChildrenProperty,
                RotateTransform.AngleProperty
            };

        string anglePath = "(0).(1)[1].(2)";
        PropertyPath propPath = new PropertyPath(anglePath, propertyChain);
        Storyboard.SetTargetProperty(handRotation, propPath);

        Storyboard sb = new Storyboard();
        sb.Children.Add(handRotation);
        sb.Begin(this);
    }

【问题讨论】:

    标签: wpf


    【解决方案1】:

    我很傻,忽略了这样一个事实,即所有静态回调方法的第一个参数是调用该方法的实例。只需将其转换为您的任何类型,然后就可以通过它访问属性。

    【讨论】:

      【解决方案2】:

      我认为你需要使用 PropertyChangedCallback an example

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2021-08-20
      • 2016-04-29
      • 2013-02-13
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多