我无法在我的 WPF 应用程序中解析来自 Storyboard.TargetProperty 的路径

I cannot resolve the path from Storyboard.TargetProperty in my WPF app

在我的 WPF 应用程序中,我有一个特定元素的动画。要设置动画的元素如下所示。

    <Path x:Name="theX" StrokeThickness="7" StrokeStartLineCap="Round" StrokeEndLineCap="Round">
        <Path.Data>
            <GeometryGroup>
                <LineGeometry StartPoint="4, 4" EndPoint="60, 60"/>
                <LineGeometry StartPoint="4, 60" EndPoint="60, 4"/>
            </GeometryGroup>
        </Path.Data>
    </Path>

LineGeometry元素的颜色应该是动画的,但我不知道Storyboard.TargetProperty路径是如何解析的。在这种情况下,GeometryGroup 元素会导致问题。 GeometryGroup元素是如何容纳在Storyboard.TargetProperty的路径中的,看三个“???”。

我已经尝试过以下方法: ...).GeometryGroup.(... ...).(GeometryGroup.Children).(... ...).GeometryCollection.(... ...我也试过了 (Path.Stroke).(SolidColorBrush.Color)

    <ColorAnimationUsingKeyFrames BeginTime="0:0:1" Duration="0:0:1"
                                                              Storyboard.TargetName="theX"
                                                              Storyboard.TargetProperty="(Path.Stroke).???.(SolidColorBrush.Color)"
                                                              FillBehavior="Stop">
                <DiscreteColorKeyFrame Value="#333333" KeyTime="0:0:0"/>
                <LinearColorKeyFrame Value="#6AFF00" KeyTime="0:0:0.2"/>
                <DiscreteColorKeyFrame Value="#6AFF00" KeyTime="0:0:0.5"/>
                <LinearColorKeyFrame Value="#333333" KeyTime="0:0:0.9"/>
     </ColorAnimationUsingKeyFrames>

几何元素是具有数据绑定的 ItemsControlDataTemplat 的一部分。我在通过数据绑定链接的 .NET 属性 上得到一个异常。

异常翻译:

System.InvalidOperationException:“属性 路径中并非所有 属性 引用”(0).GeometryGroup。 (1)“可以解决。确保合适的对象支持该属性。”

在应用程序中有一个类似的元素,一个 EllipseGeometry,其中动画以这种方式工作。区别在于 GeometryGroup 元素。

<Path x:Name="theO" StrokeThickness="6" Stroke="Transparent">
    <Path.Data>
        <EllipseGeometry Center="25, 25" RadiusX="22" RadiusY="22"/>
    </Path.Data>
</Path>


<ColorAnimationUsingKeyFrames BeginTime="0:0:1" Duration="0:0:1"
                                                              Storyboard.TargetName="theO"
                                                              Storyboard.TargetProperty="(Path.Stroke).(SolidColorBrush.Color)"
                                                              FillBehavior="Stop">
                <DiscreteColorKeyFrame Value="#333333" KeyTime="0:0:0"/>
                <LinearColorKeyFrame Value="#FF4F00" KeyTime="0:0:0.2"/>
                <DiscreteColorKeyFrame Value="#FF4F00" KeyTime="0:0:0.5"/>
                <LinearColorKeyFrame Value="#333333" KeyTime="0:0:0.9"/>
</ColorAnimationUsingKeyFrames>

非常感谢您的帮助。

请注意,在工作示例中,您将透明画笔设置为描边 属性。
但是在第一个示例中,没有为此 属性.
设置任何内容 因此它是空的。
而且 null 没有属性来为它们设置动画。

您可以在此 属性 中显式设置 SolidColorBrush 实例,为该实例命名,并直接访问其颜色 属性。
它会比所有这些演员都容易得多。

示例:

        <Path x:Name="theX" StrokeThickness="7" StrokeStartLineCap="Round" StrokeEndLineCap="Round">
            <Path.Stroke>
                <SolidColorBrush x:Name="PathStroke" Color="Transparent"/>
            </Path.Stroke>
            <Path.Data>
                <GeometryGroup>
                    <LineGeometry StartPoint="4, 4" EndPoint="60, 60"/>
                    <LineGeometry StartPoint="4, 60" EndPoint="60, 4"/>
                </GeometryGroup>
            </Path.Data>
        </Path>
        <ColorAnimationUsingKeyFrames BeginTime="0:0:1"
                                      Duration="0:0:1"
                                      Storyboard.TargetName="PathStroke"
                                      Storyboard.TargetProperty="Color"
                                      FillBehavior="Stop">
            <DiscreteColorKeyFrame Value="#333333" KeyTime="0:0:0"/>
            <LinearColorKeyFrame Value="#6AFF00" KeyTime="0:0:0.2"/>
            <DiscreteColorKeyFrame Value="#6AFF00" KeyTime="0:0:0.5"/>
            <LinearColorKeyFrame Value="#333333" KeyTime="0:0:0.9"/>
        </ColorAnimationUsingKeyFrames>