2011-01-04 8 views
2

ブレンドして長方形#1(6つ)を選択し、単純なフェードアウトストーリーボードを作成しました。XAMLで特定のRectangleオブジェクトをフェードアウトするにはどうすればよいですか? (どれがどれになるかわからない)

ストーリーボードを他の矩形にプログラムで簡単に適用するにはどうすればよいですか?

エラー2は、暗黙的にタイプ 「システムを変換できません

私は単に

Storyboard.TargetNameProperty = this.rect2;

のような何かを言うと、ストーリーボードを実行することができ期待していた、それは矩形#2をフェードアウトだろうが、

.Windows.Shapes.Rectangle '〜 ' System.Windows.DependencyProperty 'C:_Code \ WP7_SL_WStest \ wp7wstest \ Views \ GameTimer.xaml.cs 63 49 wp7wstest

私のXAML

<phone:PhoneApplicationPage.Resources> 
    <Storyboard x:Name="StoryboardFadeOut"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="rect1"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="1"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</phone:PhoneApplicationPage.Resources> 
+0

ありがとうございます!しかし、2つのオブジェクトを持っていて、ストーリーボードアニメーションを実行したいのですが?これは動作しません..他のインスタンスを同時に動作させるための簡単な方法は? – punkouter

+0

Storyboard StoryboardFadeOut = this.FindName( "StoryboardFadeOut")をストーリーボードとして使用します。 Storyboard.SetTarget(StoryboardFadeOut、rect2としてDependencyObject); Storyboard.SetTarget(StoryboardFadeOut、rect4としてDependencyObject); StoryboardFadeOut.Begin(); – punkouter

答えて

1

あなたは添付プロパティStoryboard.SetTargetNameを使用する必要があります。例

private void rect_MouseEnter(object sender, MouseEventArgs e) 
{ 
    Rectangle clickedRectangle = sender as Rectangle; 
    Storyboard StoryboardFadeOut = this.FindName("StoryboardFadeOut") as Storyboard; 
    Storyboard.SetTargetName(StoryboardFadeOut, clickedRectangle.Name); 
    StoryboardFadeOut.Begin(); 
} 
private void rect_MouseLeave(object sender, MouseEventArgs e) 
{ 
    Storyboard StoryboardFadeOut = this.FindName("StoryboardFadeOut") as Storyboard; 
    StoryboardFadeOut.Stop(); 
} 

背後

<Rectangle Name="rect1" IsHitTestVisible="True" Fill="Green" 
      MouseEnter="rect_MouseEnter" 
      MouseLeave="rect_MouseLeave"/> 
<Rectangle Name="rect2" IsHitTestVisible="True" Fill="Red" 
      MouseEnter="rect_MouseEnter" 
      MouseLeave="rect_MouseLeave"/> 

コード更新

decycloneが指摘したように、それは我々がターゲットへの直接アクセスを持っているとき代わりがsetTargetを使用することをお勧めします。更新されたMouseEnterメソッドは次のようになります

private void rect_MouseEnter(object sender, MouseEventArgs e) 
{ 
    Storyboard StoryboardFadeOut = this.FindName("StoryboardFadeOut") as Storyboard; 
    Storyboard.SetTarget(StoryboardFadeOut, sender as DependencyObject); 
    StoryboardFadeOut.Begin(); 
} 
+1

ターゲット要素を直接参照している場合は、代わりに 'Storyboard.SetTarget()'を使うことをお勧めします。 – decyclone

+0

@decyclone:あなたは絶対に正しいです!私の答えを更新する –

関連する問題