Я разрабатываю приложение в WPF с использованием шаблона MVVM. Я показываю ориентированный граф с узлами и ссылками (см. Следующий рисунок).Динамическая анимация с использованием раскадровки
http://free0.hiboox.com/images/1110/diapo1c36a4b95802846b8553d2fe9b9e6639.png?26
Пользователь может перетаскивать узлы из одной «ячейки» в другую. Когда пользователь удаляет узел, его положение изменяется, чтобы выровнять его в сетке. То, что я хочу сделать, - это оживить узел, когда его положение отрегулировано во время процедуры выравнивания.
Узлы, ссылки и разделители - это все элементы, отображаемые в элементе ItemsControl. Их представление контролируется некоторыми DataTemplates и их позицией со стилями.
Что я делаю следующее:
private void Align() {
// Computations...
TX = ... //Target X is set
TY = ... //target Y is set
X = TX;
Y = TY; // X and Y setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
То, что я хочу сделать, это следующее:
private void Align() {
// Computations...
TX = ...
TY = ... //TX and TY setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="UPDATEPOS">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="{Binding TX}" Duration="0:0:1"
Storyboard.TargetProperty="(Canvas.Left)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
Но это не работает во время выполнения, так как я не могу связать с « «свойство моего DoubleAnimation (это Freezable).
Что такое самый простой способ сделать такую динамическую анимацию? Анимация свойства «X» через таймер непосредственно в viewmodel?
Вы нашли решение, подобное MVVM? Было бы здорово, если бы вы могли опубликовать небольшой фрагмент вашего кода xaml (более конкретно, проблему «связывания») вашего решения. Спасибо – Peanut