C# 访问父级';孩子的名字镜

C# 访问父级';孩子的名字镜,c#,wpf,xaml,C#,Wpf,Xaml,在XAML中,我有如下代码: <Style TargetType="Button"> <Setter Property="Foreground" Value="#c10000" x:Name="TextColor"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button">

在XAML中,我有如下代码:

<Style TargetType="Button">
    <Setter Property="Foreground" Value="#c10000" x:Name="TextColor"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border x:Name="RootElement" CornerRadius="8">

                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">

                            <VisualState x:Name="MouseOver">
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetName="TextColor" 
                                            Storyboard.TargetProperty="Foreground" To="#FF8D00" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

此代码失败,并显示一条消息,说明在边框的名称范围中找不到“TextColor”。如何访问定义TextColor的名称范围?
ColorAniamtion应该使用前台属性访问setter并更改颜色。

设置按钮的
前台属性的动画,而不是设置
setter
的动画。由于
前景
属性的类型为
画笔
,而不是
颜色
,因此我在下面的示例代码中使用对象动画而不是颜色动画:

<Button.Style>
    <Style TargetType="Button">
        <Setter Property="Foreground" Value="#c10000"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border x:Name="RootElement" CornerRadius="8">
                        <ContentPresenter/>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.Foreground)">
                                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                                <DiscreteObjectKeyFrame KeyTime="0:0:0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <SolidColorBrush Color="#FF8D00"/>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Button.Style>


这是可行的,但是否可以通过某种方式增加持续时间?例如,颜色将在1秒内逐渐变化?不,对于对象动画,您不能执行逐渐的颜色变化。