C# 基于控制模板的故事板动画';s控制属性

C# 基于控制模板的故事板动画';s控制属性,c#,wpf,animation,storyboard,C#,Wpf,Animation,Storyboard,这就是我所拥有的 my window.resource中按钮的控件模板,具有带outerglow(名为--TasksToggleButtonOuterGlowBitmapEffect)和文本的椭圆 使用此模板的按钮 这就是我需要的 1。一个故事板,在上述椭圆的外流上运行 2.我将随时从我的代码隐藏文件触发此故事板 当我在下面的代码段中尝试此操作时,框架向我提供了一个运行时异常,说明它无法找到控件tasksToggleButtoNoOuterGlowBitMapEffect 更新——我希望它在

这就是我所拥有的

  • my window.resource中按钮的控件模板,具有带outerglow(名为--TasksToggleButtonOuterGlowBitmapEffect)和文本的椭圆
  • 使用此模板的按钮
  • 这就是我需要的

    1。一个故事板,在上述椭圆的外流上运行 2.我将随时从我的代码隐藏文件触发此故事板

    当我在下面的代码段中尝试此操作时,框架向我提供了一个运行时异常,说明它无法找到控件tasksToggleButtoNoOuterGlowBitMapEffect

    
    

    更新——我希望它在资源中,以便任何按钮都可以使用它。在表面上,我觉得这是使用Visual State Manager的一个很好的候选者。对于这种效果,如果触发器是鼠标悬停、按下等,那么动画就有点笨手笨脚了。如果您计划对按钮状态做出反应,那么一定要看看VSM

    您遇到的问题是,您试图访问的目标是模板的一部分,因此不是真正的元素。这样做是有道理的:假设您有50个按钮都应用了相同的模板:动画如何知道您真正想要的是哪个任务ToggleButtonOuterGlowBitMapEffect

    您可能可以在触发器中处理此问题(如果这是WPF),但我认为要这样做,动画也需要在模板中定义,我不知道您是否可以这样做


    您还可以在运行时在代码隐藏中导航模板树,并在那里设置动画。

    刚刚看到PanJanek发布的链接:该帖子有答案。我不知道你可以将模板传递给动画,这很酷!
    <Window.Resource>
        <ControlTemplate x:Key="DefaultTasksToggleButtonTemplate" TargetType="ToggleButton">
            <Grid Margin="2">
                <Border BorderBrush="White" BorderThickness="2" CornerRadius="20">
                    <Border.BitmapEffect>
                        <OuterGlowBitmapEffect x:Name="TasksToggleButtonOuterGlowBitmapEffect" GlowColor="LightGray" />
                    </Border.BitmapEffect>
                </Border>
                <Ellipse Fill="Red" Width="20" Height="20" Margin="2" />
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Grid>
        </ControlTemplate>
    
    
        <Storyboard x:Key="GlowStoryboard">
            <DoubleAnimation Storyboard.TargetName="TasksToggleButtonOuterGlowBitmapEffect" Storyboard.TargetProperty="GlowSize" From="5" To="10" />
        </Storyboard>
    
    </Window.Resources>