У меня есть DoubleAnimation, что я хочу связать свои свойства From, To и Duration, чтобы они плавно менялись.Свойство Binding the Duration анимации в Silverlight
Связывание From и To отлично работает, плавно меняет их, но изменения Длительности просто игнорируются.
Для отладки я сделал кнопку, которая нажимает на вызовы методов Stop и Begin, содержащих StoryBoard, и анимация начинается с начала с правильной продолжительностью. Также я проверил и увидел, что свойство Duration анимации фактически обновляется каждый раз, поэтому изменение просто игнорируется анимацией. (В отличие от С и К, которые действительно реагируют гладко.)
Пробовал то же самое в WPF и получил те же результаты, вот фрагмент кода:
<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>
Я был бы очень признателен объяснение, почему это не рабочая и любые обходные пути, которые сделают обязательную работу с плавным переходом.
Кроме того, фактическая конечная цель состоит в том, чтобы TextBlock двигался с постоянной скоростью, несмотря на изменения в From и To. Поэтому, если есть другой способ достичь этого, это будет еще лучше.
Спасибо.
Как я уже говорил, насколько я могу заняться связями, я изменил и продолжил мой вариант в моей модели, а свойство duration анимации было обновлено немедленно каждый раз, просто мне нужно было вызвать StoryBoard.Stop , StoryBoard.Begin, чтобы анимация действительно изменилась. Можете ли вы показать мне свой XAML? – Evgeny
Вот xaml и .cs, вы можете нажать кнопку, чтобы изменить продолжительность. – demaxSH