私は、From、To、およびDuration Propertiesをバインドしてスムーズに変更するDoubleAnimationを持っています。SilverlightでアニメーションのDurationプロパティをバインドする
FromとToのバインディングはうまく動作し、スムーズに変更されますが、Durationの変更は単に無視されます。
デバッグでは、クリックすると、StoryBoardを含むStopメソッドとBeginメソッドが呼び出され、アニメーションが最初から正しい持続時間で開始されました。また、アニメーションのDurationプロパティが実際に毎回更新されていることを確認して見ました。そのため、変更はアニメーションによって無視されています。
WPFで同じことをしようとしましたし、同じ結果を得た、ここに抜粋です(Fromとそれに本当にスムーズに反応するが、とは違って。):
<Canvas>
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard x:Name="Story">
<DoubleAnimation x:Name="Anime"
Duration="{Binding Duration}"
RepeatBehavior="Forever"
Storyboard.TargetName="Text1"
Storyboard.TargetProperty="(Canvas.Left)"
From="0"
To="400"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<TextBlock Text="Hello" Name="Text1"/>
</Canvas>
私は説明がなぜこの作業ではない、本当に感謝バインディングをスムーズに行うための回避策があります。
また、私の実際の最終目標は、FromとToの変更にもかかわらず、TextBlockを一定の速度で動かすことです。だから、これを達成する別の方法があれば、それはさらに良いでしょう。
ありがとうございました。
私が心配している限り、バインディングの仕事は変わりました。私のビューモデルの期間とアニメーションの継続時間のプロパティは、毎回すぐに更新されました。StoryBoard.Stop 、StoryBoard.Begin、アニメーションを実際に変更します。あなたはあなたのXAMLを見せてくれますか? – Evgeny
ここにxamlと.csがあります。ボタンをクリックして期間を変更することができます。 – demaxSH