zoukankan      html  css  js  c++  java
  • wpf获取模板化控件中的动画。

    直接在在模版中用blend添加动画,默认会放在ControlTemplate 的 Resources下面,使用了多种方法都无法正确获取Storyboard。。

    <ControlTemplate TargetType="{x:Type local:TWindow}">
                            <ControlTemplate .Resources>
                                <Storyboard x:Key="PromptMessage">
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="promptGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>
                                        <DiscreteObjectKeyFrame KeyTime="0:0:1.5" Value="{x:Static Visibility.Collapsed}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="promptBorder">
                                        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.01"/>
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </ControlTemplate .Resources>
                        <Grid x:Name="PART_MainGrid" Margin="3">
        </Grid>
     </ControlTemplate>
    

      

    将动画移到Grid的Resources下面,通过Grid来找到动画。代码如下。

    <ControlTemplate TargetType="{x:Type local:TWindow}">
                        <Grid x:Name="PART_MainGrid" Margin="3">
                            <Grid.Resources>
                                <Storyboard x:Key="PromptMessage">
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="promptGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>
                                        <DiscreteObjectKeyFrame KeyTime="0:0:1.5" Value="{x:Static Visibility.Collapsed}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="promptBorder">
                                        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.01"/>
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </Grid.Resources>
    </Grid>
     </ControlTemplate>
    

      

              Grid  rootGrid = this.GetTemplateChild("PART_MainGrid") as Grid;
                if (rootGrid != null)
                {
                  Storyboard PromptMessage = (Storyboard)rootGrid.Resources["PromptMessage"];
    
                }
    

      

  • 相关阅读:
    [sql]在case语句中不同情况下then的数据的数据类型不一致ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
    环境迁移 小记
    linux下安装oracle遇到的问题
    正向代理与反向代理
    文件夹与SVN脱离关系
    shell 脚本中$$,$#,$?
    在MySQL中单列索引和联合索引的区别
    Java中Map、HashMap、LinkedHashMap、TreeMap的区别
    Error、Exception与RuntimeException的区别
    设计模式--单例模式
  • 原文地址:https://www.cnblogs.com/m7777/p/4477627.html
Copyright © 2011-2022 走看看