我有这个问题,我似乎无法克服。也许有人可以帮忙。比较PropertyPath值
我正在创建一个动态创建DoubleAnimations的方法。我会从数组中为它提供一组不同的用户控件,并自动创建DoubleAnimations以添加到StoryBoard。
的事情是,我需要插入两种类型PropertyPaths的:PlaneProjection.RotationYProperty和Control.OpacityProperty。我必须设置Storyboard.SetTarget对他们不同,所以我需要一种方法来比较我在我的方法中调用TargetProperty的PropertyPath参数。为了解释这里有我想要的代码做一个部分:
if (TargetProperty == new PropertyPath (PlaneProjection.RotationYProperty))
{
// Do some code
projection = control.Projection as PlaneProjection;
Storyboard.SetTarget(doubleAnimation, projection);
}
else if (TargetProperty == new PropertyPath (Control.OpacityProperty))
{
Storyboard.SetTarget(doubleAnimation, control);
}
我能够通过使用布尔作为一种解决方法开关,使我的方法工作,但我还是宁愿减少参数的个数在我的方法中,如果可能的话。
我已经尝试使用:
if (TargetProperty.ToString() == new PropertyPath (PlaneProjection.RotationYProperty).ToString())
......还有......
if (TargetProperty.Equals(new PropertyPath (PlaneProjection.RotationYProperty)))
...但他们没有工作。任何想法来解决这个问题?难道我做错了什么?
在此先感谢!
你需要'control'创建'doubleAnimation',还是仅仅用于'Storyboard.SetTarget'? –
'control'可以是我想要动画的任何用户控件。 'projection'就是这个控制器的'PlaneProjection'。是的,它仅用于'Storyboard.SetTarget'。 我的方法最初同时处理控件的平面投影和不透明属性,但我想我会尽量使它与一个工作,以便我可以减少需要传递给它的参数的数量。那是当我注意到这个小怪癖。我一直在考虑再次使用旧的方法,但我认为知道这是否有任何解决方法会很有趣。 – DeVilFisCh