如何淡出XAML中的特定矩形对象?(不知道会是哪一个)

如何淡出XAML中的特定矩形对象?(不知道会是哪一个),xaml,animation,windows-phone-7,storyboard,Xaml,Animation,Windows Phone 7,Storyboard,我加载了blend并选择矩形#1(共6个),然后创建了一个简单的淡出故事板 如何以编程方式轻松地将该情节提要应用于其他矩形 我希望我能简单地说 Storyboard.TargetNameProperty=this.rect2 然后运行故事板,这将淡出矩形#2,但是 错误2无法隐式转换类型 “System.Windows.Shapes.Rectangle”到 “System.Windows.dependencProperty”C:_Code\WP7\u SL\u WStest\wp7wstest\

我加载了blend并选择矩形#1(共6个),然后创建了一个简单的淡出故事板

如何以编程方式轻松地将该情节提要应用于其他矩形

我希望我能简单地说

Storyboard.TargetNameProperty=this.rect2

然后运行故事板,这将淡出矩形#2,但是

错误2无法隐式转换类型 “System.Windows.Shapes.Rectangle”到 “System.Windows.dependencProperty”C:_Code\WP7\u SL\u 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>

您必须使用附加的属性
故事板.SetTargetName
。范例

<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"/>
更新

正如所指出的,当我们可以直接访问目标时,最好使用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();
}

当您直接引用目标元素时,我建议使用
Storyboard.SetTarget()
。谢谢,效果很好!!但是,如果我有两个对象要在其上执行故事板动画,该怎么办?这样做行不通。。任何让另一个实例同时动作的简单方法?Storyboard Storyboard Fadeout=this.FindName(“Storyboard Fadeout”)作为Storyboard;Storyboard.SetTarget(StoryboardFadeOut,rect2作为DependencyObject);Storyboard.SetTarget(StoryboardFadeOut,rect4作为DependencyObject);故事板淡出。开始();
private void rect_MouseEnter(object sender, MouseEventArgs e)
{
    Storyboard StoryboardFadeOut = this.FindName("StoryboardFadeOut") as Storyboard;
    Storyboard.SetTarget(StoryboardFadeOut, sender as DependencyObject);
    StoryboardFadeOut.Begin();
}