C# 模板化动画:我可以在时间轴中引用父属性吗?

C# 模板化动画:我可以在时间轴中引用父属性吗?,c#,wpf,xaml,animation,freezable,C#,Wpf,Xaml,Animation,Freezable,给定以下自定义动画类:(来自问题的一个答案): 给定以下用例: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:C

给定以下自定义动画类:(来自问题的一个答案):

给定以下用例:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:Components="clr-namespace:FooBar.Components"
    xmlns:Animations="clr-namespace:FooBar.Classes">
    <Style TargetType="{x:Type Components:MyButtons}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <!--Stuff-->
                    <ControlTemplate.Triggers>
                        <EventTrigger RoutedEvent="GotFocus">
                            <BeginStoryboard>
                                <Storyboard>
                                    <Animations:BrushAnimation
                                        Storyboard.TargetName="Foo"
                                        Storyboard.TargetProperty="BarBrush"
                                        Duration="0:0:0.3"
                                        From="<What Do I Put Here?>"
                                        To="<What Do I Put HERE?!>"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

根据我读到的内容,您无法将时间线与值绑定,因为
Freezable

我阅读了一个可能的解决方案,但它使用了标记属性,我认为这个用例可能超出了建议的解决方案的范围


我有没有办法让时间线从我的组件中读取值?

您不必一直盲目地指定
,也许您想要从/到当前值运行动画(平滑动画)?结论-将动画移到代码后面。我喜欢这个问题。希望你能很快得到答案,或者在下面的答案中分享你的答案。
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:Components="clr-namespace:FooBar.Components"
    xmlns:Animations="clr-namespace:FooBar.Classes">
    <Style TargetType="{x:Type Components:MyButtons}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <!--Stuff-->
                    <ControlTemplate.Triggers>
                        <EventTrigger RoutedEvent="GotFocus">
                            <BeginStoryboard>
                                <Storyboard>
                                    <Animations:BrushAnimation
                                        Storyboard.TargetName="Foo"
                                        Storyboard.TargetProperty="BarBrush"
                                        Duration="0:0:0.3"
                                        From="<What Do I Put Here?>"
                                        To="<What Do I Put HERE?!>"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>