zoukankan      html  css  js  c++  java
  • WPF VisualStateGroup.Transitions和VisualState ,过度状态和视图状态

    <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="ViewStates">
                                    <VisualStateGroup.Transitions>
                                        <VisualTransition GeneratedDuration="0:0:0.3" To="FContentState">
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetName="FButtonTransition" Storyboard.TargetProperty="Angle" To="-90" Duration="0:0:0.2"/>
                                            </Storyboard>
                                        </VisualTransition>
                                        <VisualTransition GeneratedDuration="0:0:0.3" To="BackContentState">
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetName="FButtonTransition" Storyboard.TargetProperty="Angle" To="90"  Duration="0:0:0.2"/>
                                            </Storyboard>
                                        </VisualTransition>
                                    </VisualStateGroup.Transitions>
    
                                    <VisualState x:Name="FContentState">
                                        <Storyboard>
                                            <DoubleAnimation Storyboard.TargetName="BBackContent" Storyboard.TargetProperty="Opacity" To="0" />
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="BackContentState">
                                        <Storyboard>
                                            <DoubleAnimation Storyboard.TargetName="BFContent" Storyboard.TargetProperty="Opacity" To="0" />
                                            <DoubleAnimation Storyboard.TargetName="FButtonTransition" Storyboard.TargetProperty="Angle" To="90" />
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
    速度理解上面代码:
    VisualStateGroup.Transitions(过度状态)都是为视图状态而的,没有视图状态,过度状态完全没作用,
    下面代码就是将视图状态和过度状态绑定,在执行VisualState(视图状态)时,会执行绑定的VisualTransition(过度状态),所以GeneratedDuration="0:0:0.3"就起作用了[视图状态中的Storyboard动作过度0.3秒],
    然后执行过度视图中的Storyboard
     <VisualState x:Name="FContentState">
           <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="BBackContent" Storyboard.TargetProperty="Opacity" To="0" />
           </Storyboard>
     </VisualState>
     <VisualTransition GeneratedDuration="0:0:0.3" To="FContentState">
           <Storyboard>
                   <DoubleAnimation Storyboard.TargetName="FButtonTransition" Storyboard.TargetProperty="Angle" To="-90" Duration="0:0:0.2"/>
           </Storyboard>
    </VisualTransition>

    如何执行视图状态?
    代码中调用下面代码
    VisualStateManager.GoToState(this, "FContentState", false);
    第一个参数:状态间转换控件
    第二个参数:你的视图状态名
    第三个参数:是否使用过度状态

    视图状态组的代码很是枯燥,记住怎么用就行了,实在是敲不出来就复制粘贴,然后改动改动即可。。。
  • 相关阅读:
    jsTree展开根节点 设置用户图标
    Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转
    MySQL删除重复数据
    200道物理学难题——001 三只蜗牛
    慎用GetOpenFileName
    Windows7隐藏字体
    Windows 位图
    Windows 调色板
    C++模板特化
    使用Visual Studio制作安装包
  • 原文地址:https://www.cnblogs.com/ilison/p/12518039.html
Copyright © 2011-2022 走看看