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"];
    
                }
    

      

  • 相关阅读:
    两台电脑间的消息传输
    商品库存订购管理管理程序代写代做代开发
    基于ssh的汽车配件进销存系统
    Ajax初识
    系统排队仿真源代码
    模拟一个排队系统
    Linux下,C++编程论坛题目抽取
    实践是检验真理的唯一标准2 脱壳篇03
    迪杰斯特拉算法
    最短路径求法
  • 原文地址:https://www.cnblogs.com/m7777/p/4477627.html
Copyright © 2011-2022 走看看