我想在点击按钮时启动动画。以下代码看起来合理,但会引发运行时错误。理想情况下,我希望只需将Storyboard指向一个命令即可。这可能吗(我已经搜索了一下,没有找到任何迹象表明可以这样做)?
这是一个故事板:
运行时错误提示如下:
Microsoft JScript运行时错误:Silverlight应用程序中的未处理错误2531。[Line: 97 Position: 55] at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at SilverlightApplication8.MainPage.InitializeComponent() at SilverlightApplication8.MainPage..ctor() at SilverlightApplication8.App.Application_Startup(Object sender, StartupEventArgs e) at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
第97行是这样的:
<Button Width="50" Height="24" Content="X">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard Storyboard="{StaticResource ShowTemplateSelector}">
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
这是一个故事板:
<UserControl.Resources>
<Storyboard x:Name="ShowTemplateSelector">
<DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Width" From="0" To="332" Duration="0:0:0.4" />
<DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Height" From="0" To="100" Duration="0:0:0.4" />
</Storyboard>
运行时错误提示如下:
Microsoft JScript运行时错误:Silverlight应用程序中的未处理错误2531。[Line: 97 Position: 55] at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at SilverlightApplication8.MainPage.InitializeComponent() at SilverlightApplication8.MainPage..ctor() at SilverlightApplication8.App.Application_Startup(Object sender, StartupEventArgs e) at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
第97行是这样的:
<EventTrigger RoutedEvent="Button.Click">
Storyboard.TargetName="canvasStyleSelected"
无法解析名称canvasStyleSelected,因为它不在范围内。WPF中的DynamicResource可以工作,因为它将从执行范围查找名称,但不幸的是,该扩展在SL中不存在。这是我发现的唯一实现你所描述的方式。 - Stephan