2011-12-20 6 views
1

私は、ウィンドウが縮小されて側面に移動するダブルアニメーションを持っています。私はWindow_Deactivatedイベントでこれを行います。コードは以下の通りです:WINDOW_ACTIVATEDイベントでDoubleanimationは値をリセットしますか?

 <Storyboard x:Key="StoryTestScaleDownGrd1"> 

     <DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleX" 
         From="1" To=".20" Duration="0:0:.25" BeginTime="00:00:00" /> 

     <DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleY" 
         From="1" To=".20" Duration="0:0:.25" BeginTime="00:00:00" />    

     <DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetX" 
         Duration="0:0:.25" BeginTime="00:00:00.25" /> 

     <DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetY" 
         Duration="0:0:.25" BeginTime="00:00:00.25"/> 

    </Storyboard> 

、私は以下のコードがあります。

 <Storyboard x:Key="StoryTestScaleUpGrd1"> 

     <DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleX" 
         From=".20" To="1" Duration="0:0:.25" BeginTime="00:00:00.75" /> 

     <DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleY" 
         From=".20" To="1" Duration="0:0:.25" BeginTime="00:00:00.75" /> 

     <DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetX" 
         Duration="0:0:.25" BeginTime="00:00:00.5" /> 

     <DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetY" 
         Duration="0:0:.25" BeginTime="00:00:00.5" /> 

    </Storyboard> 

マイviewport2dvisual3dは以下の通りです:

 <Viewport2DVisual3D.Transform> 
      <Transform3DGroup> 

       <RotateTransform3D> 
        <RotateTransform3D.Rotation> 
         <AxisAngleRotation3D x:Name="Win1Angle" Angle="0" Axis="0, 1, 0" /> 
        </RotateTransform3D.Rotation> 
       </RotateTransform3D> 

       <ScaleTransform3D x:Name="ScaleUp" /> 
       <ScaleTransform3D x:Name="ScaleDown" /> 

       <TranslateTransform3D x:Name="MoveCenter1" OffsetX="0" OffsetY="0" /> 

      </Transform3DGroup> 
     </Viewport2DVisual3D.Transform> 


     <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D --> 
     <Viewport2DVisual3D.Geometry> 
      <!-- positions of triangle 0   1   2   3  --> 

      <MeshGeometry3D Positions="-.78,.58,0 -.78,-.58,0 .78,-.58,0 .78,.58,0"         
            TextureCoordinates="0,0 0,1 1,1 1,0" 
            TriangleIndices="0 1 2 0 2 3" /> 

     </Viewport2DVisual3D.Geometry> 

     <Viewport2DVisual3D.Material> 
      <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
     </Viewport2DVisual3D.Material> 

     <Grid x:Name="grdHolder1" VerticalAlignment="Center" HorizontalAlignment="Center" ClipToBounds="False" Opacity="1" /> 

    </Viewport2DVisual3D> 

行うためのコードアニメーションは以下の通りです:

ウィンドウがアクティブにイベントで

StoryDeActivatedGrd1 = (Storyboard)this.Resources["StoryTestScaleDownGrd1"]; 


    (StoryDeActivatedGrd1.Children[2] as DoubleAnimation).From = 0.0; 
      (StoryDeActivatedGrd1.Children[2] as DoubleAnimation).To = (double)GV.oCoOrdinate.XValue; 
      (StoryDeActivatedGrd1.Children[3] as DoubleAnimation).From = 0.0; 
      (StoryDeActivatedGrd1.Children[3] as DoubleAnimation).To = (double)GV.oCoOrdinate.YValue; 
      StoryDeActivatedGrd1.Begin(); 

を無効に、私は次のコードを持っている:

StoryActivatedGrd1 = (Storyboard)this.Resources["StoryTestScaleUpGrd1"]; 

(StoryActivatedGrd1.Children[2] as DoubleAnimation).To = 0.0; 
       (StoryActivatedGrd1.Children[3] as DoubleAnimation).To = 0.0; 
       StoryActivatedGrd1.Begin(); 

私の問題は、ウィンドウがアクティブ化されたときに私の窓が極端に小さい、ということです。最初のアニメーションの後にウィンドウサイズをリセットする方法はありますか?

は実は、私は、実行時にユーザーコントロールを保持するために2つのグリッドを使用し、私は簡単に作業を最初のグリッドを持っていますが、窓が第二のUserControlに反転したときに、私は上記のような問題を持っている...

答えて

3

アニメーション化されたプロパティを元の状態にリセットしたい場合は、そのプロパティを変更するアニメーションでFillBehaviorプロパティをStopに設定することができます。

+0

こんにちはicebat、あなたの答えをありがとうが、私が必要なのは、ウィンドウがアクティブになると、元のサイズに戻る必要があります。 – sony

+0

@sony、申し訳ありません、私はあなたを誤解しました。それで、アニメーションを1つの[Storyboard](http://msdn.microsoft.com/en-us/library/system.windows.media.animation.storyboard.aspx)に追加することができます。このクラスには、あなたを助けることができる 'Stop'や' Remove'のようないくつかの制御メソッドがあります。 – icebat

0

は、あなたはそれがデフォルトにリセットさせるように設定する/からなしにアニメーションの任意の種類を使用することができます。これは、scaleXプロパティをリセットする

<DoubleAnimation Storyboard.TargetName="ScaleUp" 
       Storyboard.TargetProperty="ScaleX" 
       Duration="0:0:.25" /> 

ストーリーボードで変更した4つのプロパティ(または選択肢)をラップして、ウィンドウがアクティブになったときに起動できます。

関連する問題