在故事板结束时触发事件

时间:2011-12-19 23:31:35

标签: silverlight-4.0 expression-blend blend expression-blend-4

我是银光的新手,我想在故事板完成或结束时触发。我将如何继续这样做。我已经在鼠标输入的故事板中有一个触发器。我不确定我是否可以在那里添加更多活动。 感谢

1 个答案:

答案 0 :(得分:6)

使用“StoryBoardComplete”行为。您可以在“行为”下的“资产”面板中找到它。

编辑:对不起,我匆忙回答并且记忆不正确。当你说你是Silverlight的新手并且我应该验证我的答案时,我应该提供更多详细信息。

正确的答案: 在行为上使用“StoryboardCompletedTrigger”。假设您想在Storyboard完成时更改Rectangle的Fill属性。在应用程序中添加一个Rectangle:

enter image description here

转到“资源”面板(与“项目”面板相同的选项卡组)。打开标题为“行为”的类别,找到“ChangePropertyAction”。

enter image description here

将一个拖放到Rectangle上。对象和时间线现在看起来像这样:

enter image description here

请注意,已选中ChangePropertyAction项。现在转到“属性”面板:

enter image description here

在“触发器”部分,单击我为您突出显示的“新建”按钮。这将打开一个对话框,让您选择不同的TriggerType。在这种情况下,您需要一个“StoryboardCompletedTrigger”:

enter image description here

填写Storyboard和PropertyName值。

enter image description here

现在,当Storyboard1完成Rectangle的Fill属性时,应该更改为Red。以下是此简单示例的强制XAML代码:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" mc:Ignorable="d"
x:Class="SilverlightApplication2.MainPage"
Width="640" Height="480">
<UserControl.Resources>
    <Storyboard x:Name="Storyboard1">
        <DoubleAnimation Duration="0:0:0.9" To="-360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="rectangle" d:IsOptimized="True"/>
    </Storyboard>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
    <Rectangle x:Name="rectangle" Fill="#FF0000F7" HorizontalAlignment="Left" Margin="86,133,0,225" Stroke="Black" Width="210" RenderTransformOrigin="0.5,0.5">
        <Rectangle.RenderTransform>
            <CompositeTransform/>
        </Rectangle.RenderTransform>
        <i:Interaction.Triggers>
            <ei:StoryboardCompletedTrigger Storyboard="{StaticResource Storyboard1}">
                <ei:ChangePropertyAction PropertyName="Fill">
                    <ei:ChangePropertyAction.Value>
                        <SolidColorBrush Color="Red"/>
                    </ei:ChangePropertyAction.Value>
                </ei:ChangePropertyAction>
            </ei:StoryboardCompletedTrigger>
        </i:Interaction.Triggers>
    </Rectangle>
    <Button Content="Button" HorizontalAlignment="Left" Height="50" Margin="86,0,0,98" VerticalAlignment="Bottom" Width="110">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                <ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard1}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>
</Grid>

YMMV:此方法适用于“行为”。在不了解您的情况的情况下,我无法提出更好的建议,但这是实现您想要的典型方式。