Я использую MVVM и столкнулся с ситуацией, когда мне нужна кнопка для запуска анимации. Итак, я установил для него EventTrigger, и он запускает эту анимацию:
<DoubleAnimation
(...)
From="{Binding ElementName=Browser, Path=DataContext.TooltipPosition}"
To="150"/>
Проблема в том, что я не хочу, чтобы эта анимация воспроизводилась более одного раза. Таким образом, после первого нажатия кнопки он должен меняться от 0 до 150, а для всех последующих кликов он не должен быть виден, поэтому он должен меняться от 150 до 150.
В моей ViewModel у меня есть свойство TooltipPosition, для которого установлено значение 0. Я создал команду для моей кнопки, которая устанавливает для этого свойства значение 150 и вызывает.
PropertyChanged(this, new PropertyChangedEventArgs("TooltipPosition").
Проблема в том, что это свойство изменяется после второго щелчка, поэтому я вижу, как эта анимация воспроизводится дважды.
Как я могу это исправить?
-редактировать-
Да, извините, я не включил всю информацию. Я пытаюсь анимировать множество объектов, чтобы только один из них был виден. Поэтому, если пользователь меняет выбор объекта в графическом интерфейсе, анимация должна снова начинаться с 0 до 150. И очевидно, что если бы элемент А был анимирован, затем В, а затем снова А, то эта анимация не была бы видна.
-редактировать2-
Я анимирую ширину TextBlock. Дело в том, что у меня есть несколько текстовых блоков (привязки данных), и только один или ни один из них не должен быть виден в любое время. Итак, я связываю свойство Width каждого TextBlock и анимирую, так что в основном все они находятся под влиянием этой анимации. Но только один из них может быть виден, так что это работает.