給出一個由VisualStateManager作爲ControlTemplate的一部分啓動的Storyboard,如何根據控件的屬性更改來調整該動畫的SpeedRatio?如何控制VisualState中Storyboard的SpeedRatio?
<ControlTemplate>
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<Storyboard Name="SpinningThing"
SpeedRatio="{Binding SpinningSpeedRatio}">
...
這需要WPF和Silverlight的工作。
我不認爲我可以設置一個綁定有很多原因。最重要的是,Storyboard是Freezable,所以你不能僅僅在WPF中設置SpeedRatio。但是,如果它是由VisualStateManager啓動的,我可以在其上調用SetSpeedRatio嗎?
另外,因爲它的父類是一個VisualState,那麼這是不是意味着將沒有管理FrameworkElement來關聯它呢?
所以,如果我不能用綁定來做到這一點,怎麼辦呢?
不幸的是,WPF是簡單答案分崩離析的地方。在WPF中,時間軸是Freezable對象,因此綁定不會更改SpeedRatio的實際值。 http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.aspx 此外,因爲它在ViewState(我猜),你會得到綁定錯誤說: 「無法找到綁定的治理FrameworkElement ...」。 – MojoFilter 2010-08-19 13:16:10