首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较PropertyPath值

比较PropertyPath值
EN

Stack Overflow用户
提问于 2013-06-27 12:25:46
回答 2查看 260关注 0票数 0

我有一个问题,我似乎无法克服。也许有人能帮忙。

我正在创建一个动态创建DoubleAnimations的方法。我会从数组中为它提供一个由不同用户控件组成的数组,它将自动创建DoubleAnimations以添加到StoryBoard中。

问题是,我需要插入两种类型的PropertyPaths: PlaneProjection.RotationYProperty和Control.OpacityProperty。我必须为它们设置不同的Storyboard.SetTarget,所以我需要一种方法来比较在我的方法中我称之为TargetProperty的PropertyPath参数。以下是我在代码中所要做的工作的一部分:

代码语言:javascript
复制
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);
}

我能够通过使用bool作为一个变通开关来使我的方法工作,但如果可能的话,我仍然希望减少我的方法中的参数数。

我试过用:

代码语言:javascript
复制
if (TargetProperty.ToString() == new PropertyPath (PlaneProjection.RotationYProperty).ToString())

..。还有..。

代码语言:javascript
复制
if (TargetProperty.Equals(new PropertyPath (PlaneProjection.RotationYProperty)))

..。但他们都没用。有什么办法绕过这件事吗?我做错了什么吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-28 08:43:29

在KooKiz建议我使用DependencyObject之后,我意识到我可以使用DependencyProperty而不是PropertyPath,然后尝试进行比较。正如my所提到的,比较PropertyPath对象似乎是不可能的--至少在我的例子中是这样的。我的代码后来变成了这样,现在它就像一种魅力:

代码语言:javascript
复制
if (TargetProperty == PlaneProjection.RotationYProperty)
{
    // Do some code
    projection = control.Projection as PlaneProjection;
    Storyboard.SetTarget(doubleAnimation, projection);
}
else if (TargetProperty == Control.OpacityProperty)
{
    Storyboard.SetTarget(doubleAnimation, control);
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-27 16:34:36

如果在这两种情况下使用相同的逻辑来创建动画,则直接将目标属性传递给您的方法:

代码语言:javascript
复制
public void AssignAnimation(DependencyObject property)
{
    // Create the doubleAnimation
    // ...

    // Assign it
    Storyboard.SetTarget(doubleAnimation, property);
}

那么你只需要直接用你的财产来调用它:

代码语言:javascript
复制
AssignAnimation(control);
AssignAnimation(control.Projection);

如果你使用不同的逻辑,那么我建议使用两种不同的方法。您的代码将更易于阅读和维护。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17343129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档