首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从模板访问StoryBoard

从模板访问StoryBoard
EN

Stack Overflow用户
提问于 2011-06-15 10:39:39
回答 1查看 526关注 0票数 1

下面是我得到的一些类:

代码语言:javascript
复制
<Style x:Key="BoutonMenu" TargetType="{x:Type Button}">
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Margin" Value="5,5,5,5"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <ControlTemplate.Resources>
                    <Storyboard x:Key="BtnHover" AutoReverse="False" RepeatBehavior="Forever">
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="contentPresenter">
                            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="-1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
                        </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                    <Storyboard x:Key="BtnClick" AutoReverse="False">
                        <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="border">
                            <EasingPointKeyFrame KeyTime="0:0:0.1" Value="0.5,0.5"/>
                            <EasingPointKeyFrame KeyTime="0:0:0.15" Value="0.5,0.5"/>
                            <EasingPointKeyFrame KeyTime="0:0:0.25" Value="0.5,0.5"/>
                            <EasingPointKeyFrame KeyTime="0:0:0.4" Value="0.5,0.5"/>
                            <EasingPointKeyFrame KeyTime="0:0:0.6" Value="0.5,0.5"/>
                            <EasingPointKeyFrame KeyTime="0:0:1" Value="0.5,0.5"/>
                        </PointAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="border">
                            <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="-1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.15" Value="1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="-1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="-1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
                        </DoubleAnimationUsingKeyFrames>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="rectangle">
                            <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF337641"/>
                        </ColorAnimationUsingKeyFrames>
                    </Storyboard>
                    <Storyboard x:Key="BtnRevert">
                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="rectangle">
                            <EasingColorKeyFrame KeyTime="0" Value="#FF337641"/>
                            <EasingColorKeyFrame KeyTime="0:0:0.5" Value="Black"/>
                        </ColorAnimationUsingKeyFrames>
                        <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="border">
                            <EasingPointKeyFrame KeyTime="0:0:0.5" Value="0.5,0.5"/>
                        </PointAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="border">
                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-1"/>
                        </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                </ControlTemplate.Resources>
                <Border x:Name="border" BorderBrush="#FF000000" Background="#FF000000" BorderThickness="0" CornerRadius="20" Opacity="1" >
                    <Border.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform/>
                            <SkewTransform/>
                            <RotateTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Border.RenderTransform>
                    <Grid x:Name="grid">
                        <Border x:Name="mask" Background="White" CornerRadius="20"/>
                        <!-- Background Layer -->
                        <Grid x:Name="grid1">
                            <Grid.OpacityMask>
                                <VisualBrush Visual="{Binding ElementName=mask}"/>
                            </Grid.OpacityMask>
                            <Rectangle x:Name="rectangle" Fill="#FF000000" >
                                <Rectangle.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform/>
                                    </TransformGroup>
                                </Rectangle.RenderTransform>
                            </Rectangle>
                            <Rectangle x:Name="RefractionLayer">
                                <Rectangle.Fill>
                                    <RadialGradientBrush GradientOrigin="0.496,1.052">
                                        <RadialGradientBrush.RelativeTransform>
                                            <TransformGroup>
                                                <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/>
                                                <TranslateTransform X="0.02" Y="0.3"/>
                                            </TransformGroup>
                                        </RadialGradientBrush.RelativeTransform>
                                        <GradientStop Offset="0.819" Color="#00000000"/>
                                        <GradientStop Color="#FF020000" Offset="0.187"/>
                                    </RadialGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>

                            <ContentPresenter x:Name="contentPresenter" Margin="0,2,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5">
                                <ContentPresenter.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform/>
                                    </TransformGroup>
                                </ContentPresenter.RenderTransform>
                            </ContentPresenter>

                        </Grid>
                    </Grid>
                </Border>
                <ControlTemplate.Triggers>
                    <EventTrigger RoutedEvent="ButtonBase.Click">
                        <StopStoryboard BeginStoryboardName="BtnHover_BeginStoryboard"/>
                        <StopStoryboard BeginStoryboardName="BtnClick_BeginStoryboard"/>
                        <BeginStoryboard x:Name="BtnClick_BeginStoryboard" Storyboard="{StaticResource BtnClick}"/>
                    </EventTrigger>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Trigger.ExitActions>
                            <RemoveStoryboard BeginStoryboardName="BtnHover_BeginStoryboard"/>
                        </Trigger.ExitActions>
                        <Trigger.EnterActions>
                            <BeginStoryboard x:Name="BtnHover_BeginStoryboard" Storyboard="{StaticResource BtnHover}"/>
                        </Trigger.EnterActions>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True"/>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Opacity" Value="0.25"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

如你所见,我有3个不同的故事板,其中两个发生在特定的触发器上。我还有第三个(BtnRevert),我想按需启动。我似乎真的不知道该怎么做。这是可能的吗?如果是,我如何绕过它?如果不是,我如何绕过它?

编辑:所以我试了一下:

代码语言:javascript
复制
        Dim s As Storyboard = _oCurMenuBouton.Template.Resources("BtnRevert")
        s.Begin()

它似乎得到了正确的故事板,但现在我得到了:

代码语言:javascript
复制
No applicable name scope exists to resolve the name 'rectangle'.

它似乎没有认识到故事板是我的按钮的属性,或者至少是模板的属性。有没有办法让它工作呢?

让它起作用了!这就是答案

代码语言:javascript
复制
        Dim s As Storyboard = _oCurMenuBouton.Template.Resources("BtnRevert")
        s.Begin(_oCurMenuBouton,_oCurMenuBouton,Template)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-15 12:14:37

试试看这个

代码语言:javascript
复制
  <Button Height="25"
            Margin="5"
            Style="{StaticResource BoutonMenu}" Click="Button_Click"></Button>

在后台代码中

代码语言:javascript
复制
 private void Button_Click(object sender, RoutedEventArgs e)
    {
        var rButton = sender as Button;
        if (rButton != null)
        {
            Storyboard s = (Storyboard)rButton.Template.Resources["BtnRevert"];
        }  
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6352432

复制
相关文章

相似问题

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