Silverlight 4.0 使用Blend在Silverlight 4的ActionState/Transition上设置计时器
我是一名开发人员,最近下载了Blend试用版,我正在努力解决不使用CodeBehind来做事情的问题——这很酷,但它有一个相当好的学习曲线 我从这些开始,并根据我电脑上的示例在菜单上实现了一些简单的动画。我现在想做的是使菜单转换只在20秒后开始-即,使左侧的菜单在MouseLeave上消失(参见上面的链接)-只在鼠标离开后20秒开始转换(如果鼠标再次滑过,则取消)。这将使菜单停留更长时间,以防它们意外滑落 我确信它在Blend中确实很简单,但我正在努力寻找任何合适的文档——我很高兴RTFM——我只需要知道从哪里开始寻找(我在谷歌上搜索了“Blend timer stateaction”,没有任何乐趣)Silverlight 4.0 使用Blend在Silverlight 4的ActionState/Transition上设置计时器,silverlight-4.0,blend,Silverlight 4.0,Blend,我是一名开发人员,最近下载了Blend试用版,我正在努力解决不使用CodeBehind来做事情的问题——这很酷,但它有一个相当好的学习曲线 我从这些开始,并根据我电脑上的示例在菜单上实现了一些简单的动画。我现在想做的是使菜单转换只在20秒后开始-即,使左侧的菜单在MouseLeave上消失(参见上面的链接)-只在鼠标离开后20秒开始转换(如果鼠标再次滑过,则取消)。这将使菜单停留更长时间,以防它们意外滑落 我确信它在Blend中确实很简单,但我正在努力寻找任何合适的文档——我很高兴RTFM——我
谢谢你的提示 如果我正确理解您的问题:
- 当您的侧菜单上出现鼠标输入事件时,它会显示动画(例如“ShowMenuStoryboard”)
- 然后,您希望“HidementUstoryBoard”将菜单滑回,但仅在触发(由MouseLeave事件触发)20秒后才开始更改,但如果后续的Mouse Enter事件触发,则需要取消更改
- 您希望在没有代码隐藏逻辑的情况下完成所有这些
<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"
x:Class="SilverlightApplication1.MainPage"
mc:Ignorable="d">
<UserControl.Resources>
<Storyboard x:Name="ShowMenuStoryboard">
<DoubleAnimation Duration="0:0:0.5" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/>
</Storyboard>
<Storyboard x:Name="HideMenuStoryboard" BeginTime="0:0:20">
<DoubleAnimation Duration="0:0:0.5" To="-100" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel x:Name="stackPanel" HorizontalAlignment="Left" Orientation="Vertical" Width="150" d:LayoutOverrides="Height" RenderTransformOrigin="0.5,0.5" Background="#FF646CE7">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeave">
<ei:ControlStoryboardAction Storyboard="{StaticResource HideMenuStoryboard}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseEnter">
<ei:ControlStoryboardAction Storyboard="{StaticResource ShowMenuStoryboard}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<StackPanel.RenderTransform>
<CompositeTransform TranslateX="-100"/>
</StackPanel.RenderTransform>
<StackPanel.Projection>
<PlaneProjection/>
</StackPanel.Projection>
<TextBlock TextWrapping="Wrap" Text="TextBlock"/>
<TextBlock TextWrapping="Wrap" Text="TextBlock"/>
<TextBlock TextWrapping="Wrap" Text="TextBlock"/>
<TextBlock TextWrapping="Wrap" Text="TextBlock"/>
<TextBlock TextWrapping="Wrap" Text="TextBlock"/>
</StackPanel>
</Grid>
</UserControl>
您可以添加一个“假”故事板,作为第二个动画的触发器。 你需要两层木板。假冒伪劣。 你需要控制情节提要动作来启动它们。 第一个将有一个事件触发器(鼠标移出)。
第一个将有一个StoryboardCompleterTrigger链接到“假”动画 若你们还并没有看到行为、触发器和动作,工具箱里有一些很好的教程。见[工具箱学校][1]第一节。您可以在Blend的资产面板中找到它们,然后开始使用它们。它们使用起来很简单,只是开始玩它们的问题。[1] 当前位置谢谢米格尔-我看过那些教程(这就是我对不同州的想法来源——但我现在已经研究了故事板和动画,这很酷!啊,这正是我想要的——我读了故事板动画,现在一切都有意义了——感谢这个伟大的例子。一些问题:在我的例子中——我使用了两种不同的“州”并使用触发器将一个激活到另一个。在您的示例中,您使用SB并更改X位置来移动它-我只使用状态,因为这是混合教程的开始-您可以使用故事板以某种方式在状态之间转换吗?在这种方法中,您将在何处使用状态?谢谢您的帮助!您好,这是另一种方法循环:通过控件中的逻辑或外部行为(如GoToStateAction行为)在状态之间转换。故事板只是为了在控件的各种状态之间提供良好的过渡。您应该能够在过渡中插入开始时间,但不确定是否会看到您的示例。如果您希望修复特定的示例,您可以始终通过我们的网站与我们联系。(我现在将添加一个WP联系人页面)。干杯