Blend 状态的更换 GotoStateBehavior VS. this.状态.Storyboard.Begin();

原创 2012年03月30日 13:29:10

需求:一个grid上,用row,column来分成不同的区域,在不同区域放置border,在点击border时触发状态,并改变其相应区域,达到变大变小渐变的过程。

 

一、GotoStateAction 触发动画

在border处理好之后,添加

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

 

并为border添加事件,可直接用过blend添加:

1:查找到对应行为

直接拖拽至所要触发事件的控件上,.xmal 代码如下:

<i:Interaction.Triggers>
   <i:EventTrigger EventName="MouseLeftButtonDown">
      <ei:GoToStateAction StateName="VisualState"/>
   </i:EventTrigger>
</i:Interaction.Triggers>

在blend中指定触发事件,及其触发的状态名:

 eventname: MouseLeftButtonDown; StateName: 要变换到的状态名称

2:新状态:

创建一个新的状态VisualState,打开FluidLayout 按钮。

添加过滤到*,时间订为1s,添加easingfunction。

  时间框旁边的即为EasingFunction,点击打开如下,添加:

在状态改变过程中,显示的效果。

改变border的column\row\rowspan\columnspan 数据,自动生成代码如下:

<VisualState x:Name="VisualState">
   <Storyboard>
      <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.ColumnSpan)" Storyboard.TargetName="border">
	 <DiscreteObjectKeyFrame KeyTime="0">
	     <DiscreteObjectKeyFrame.Value>
		<System:Int32>2</System:Int32>
              </DiscreteObjectKeyFrame.Value>
	 </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames>

 
二、storyboard.Begin() 触发状态

在blend中的创建状态,但是触发状态在后台写,给border加事件MouseLeftButtonDown,双击在后台自动生成,.cs文件下:

        private void border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.VisualState.Storyboard.Begin();
        }


区别:

storyboard 触发的状态改变,没有平滑的过程,而GoToStateAction,可以触发easingfunction的过程,平滑进入等效果。

Blend 状态的更换 GotoStateBehavior VS. this.状态.Storyboard.Begin();

需求:一个grid上,用row,column来分成不同的区域,在不同区域放置border,在点击border时触发状态,并改变其相应区域,达到变大变小渐变的过程。   一、GotoStateAct...
  • CamilleCC
  • CamilleCC
  • 2012年03月30日 13:29
  • 1579

OpenGL Blend 的一些坑

1. 如果发现   blendSrc = DST_ALPHA 的时候,发现获取的都是1, 这个时候需要检查下GL_ALPHA_BITS的位数,判断输出到屏幕的像素是不是带有Alpha通道。 (in...
  • aa20274270
  • aa20274270
  • 2016年11月26日 18:52
  • 371

流操作: 无状态 vs. 有状态

你已经看到了很多的流操作。最初的陈述可以使他们看起来是万能的;一切都是正常的, 当您使用 parallelStream 而不是stream从集合中获取流时, 您可以免费获得并行性。当然, 对于许多应用...
  • qq_35864642
  • qq_35864642
  • 2017年10月10日 10:56
  • 82

jQuery中Ajax事件请求状态

Ajax会触发很多事件。 有两种事件,一种是局部事件,一种是全局事件: 局部事件:通过$.ajax来调用并且分配。 $.ajax({beforeSend: function(){// H...
  • yaoyyl
  • yaoyyl
  • 2016年09月06日 22:34
  • 2818

Direct3D 11 渲染状态

从本质上讲,Direct3D是一个状态机(state machine)。在我们改变它的状态之前,驻留在状态机内的当前状态是不会改变的。例如,我们在6.1节、6.2节和6.3节中看到,当顶点缓冲和索引缓...
  • pizi0475
  • pizi0475
  • 2015年07月08日 11:40
  • 2488

ios中UIButton选中状态切换

关于UIButton的事件枚举有许多,平时用的少所以很多的都不是很清楚,今天了解了下,看了以前的代码,觉得在UIButton选中时操作写了许多冗余代码,而忽略了UIButton一个很重要的属性,如下:...
  • chuming0311
  • chuming0311
  • 2015年11月10日 11:26
  • 15363

ARM指令状态切换到Thumb指令状态

AREA Arm_to_Thumb,CODE, READONLY ENTRY CODE32 start ldr r0,=aaa+1 mov r3,#18 bx r0 CODE16 aaa ...
  • u011449588
  • u011449588
  • 2015年03月26日 00:57
  • 2476

Qt4.8.2 QPushButton按钮贴图以及实现按钮的几种常用状态

一、继承自QPushButton,不改变图片本身,而是通过改变按钮背景的透明度 myPushButton.h [cpp] view plain copy ...
  • imxiangzi
  • imxiangzi
  • 2016年04月12日 12:14
  • 2250

Redis cluster配置文件和集群状态详解

redis cluster命令 集群(cluster)   cluster info       打印集群的信息 cluster nodes   列出集群当前已知的所有节点(node),以及...
  • foreverhot1019
  • foreverhot1019
  • 2017年05月24日 14:39
  • 814

iOS - UITableViewCell 改变编辑状态图片

UITableViewCell 是编辑状态时 会出现多选按钮,最近项目有需求这里要改成自己的图片和去掉一下点击效果,总结一下: 自带的效果图是这样的: 我们需要...
  • hypercode
  • hypercode
  • 2017年01月13日 16:41
  • 481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Blend 状态的更换 GotoStateBehavior VS. this.状态.Storyboard.Begin();
举报原因:
原因补充:

(最多只允许输入30个字)