2

私は http://www.codeproject.com/Articles/199014/Page-Transition-Control-for-WPFからこの例を見ている初心者です

このようなストーリーボードオブジェクトがたくさんあります

<DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" To="100" Duration="0:0:.75" AccelerationRatio=".9" />

そしてこのようなTransformGroup

`<ScaleTransform 
  ScaleX="1" ScaleY="1" 
  CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<SkewTransform 
  AngleX="0" 
  AngleY="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<RotateTransform 
  Angle="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>
<TranslateTransform X="0" Y="0" />`

誰かがそれが私にどのように機能するかを説明できますか、これはとても混乱しています!Xamlとwpfの本を読んで一日を過ごしましたが、それでもわかりません。コードを単純化して理解しようとすると、次のようなエラーが発生し続けました:'[Unknown]'プロパティはパス'(RenderTransform)。(0)[1]。(1)'のDependencyObjectを指していません

WPFは本当に難しいですか!?!?!?

4

2 に答える 2

2

WPFを初めて使用する場合、アニメーションはおそらく最良の出発点ではありませんが、少し説明できるかどうかを確認します。

WPFには2種類の「変換」があり、UIオブジェクトの外観を変更するために使用できます。

  • LayoutTransformWPFが画面上でのレイアウト方法を決定した後、オブジェクトを変更します
  • RenderTransform画面にレンダリングされた後にオブジェクトを変更します

これらのプロパティには両方とも、オブジェクトに対して発生する変換のコレクションが含まれています:、、、、およびRotate(上下または左右に移動)ScaleSkewTranslate

アニメーションは、特定の期間にプロパティをある値から別の値に変更するものですたとえばHeight、オブジェクトのプロパティを1秒間で50から200に変更して、オブジェクトが画面上で目に見えて大きくなるようにすることができます。

あなたが見ているコードは、これらのアニメーションの1つです。

<DoubleAnimation 
    Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" 
    To="100" Duration="0:0:.75" AccelerationRatio=".9" />

タグ名は、それが。であることを示しています。DoubleAnimationこれは、タイプがのプロパティを変更していることを意味しますdouble

TargetProperty、コレクション内の2番目のオブジェクトを変更していることを示していますRenderTransform(少し単純化するためにRenderTransform.Children[1]

Transformは、が存在することを期待してSkewTransformおり、アニメーションは、AngleXプロパティを現在の状態から数秒間100でに変更するように設定されています0:0:.75

AccelerationRatioプロパティについてはあまり詳しくありませんが、値が開始値から終了値まで加速する速度を変更すると思います。

于 2013-02-01T16:40:17.527 に答える
0

フォーム(XY)を使用しているプロパティパス内のすべては、「タイプXで定義されたDependencyPropertyYの値」を意味します。これらは、通常のDPか、所有者以外のタイプに設定されているアタッチされたプロパティのいずれかです。

于 2013-02-01T16:36:37.400 に答える