2010-06-09 2 views
3

Я постараюсь сделать это как можно проще.Связывание с 'To' In Storyboard

Я хочу, чтобы это сделать:

<Storyboard x:Name="MoveToLocation"> 
    <DoubleAnimation Duration="0:0:0.5" To="{Binding X}" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="grid" d:IsOptimized="True"/> 
</Storyboard> 

Как вы уже заметили, что Binding на «К» недвижимости не работает. Кажется, что он принимает только статические значения.

Как сделать эту анимацию с MVVM? Я не могу просто поставить статические данные, потому что он изменится.

Спасибо.

ответ

4

DoubleAnimation также не является FrameworkElement, поэтому привязка также не работает. См. Мой ответ на ваш предыдущий question.

Для достижения вашей цели здесь вам необходимо взять содержимое вашего DataTemplate и превратить его в UserControl. Этот новый элемент управления может выставить набор свойств зависимостей, которые необходимо связать, в том числе для значения To раскадровки.

+0

Этот второй абзац - это то, что мне нужно было для вас, спасибо. Я попробую это, когда я вернусь домой этим вечером. Итак, вы предполагаете, что я должен содержать экземпляр Storyboard внутри самого объекта (а не в xaml)? Кажется странным, но если это то, что я должен сделать, тогда я это сделаю. – Peanut

+0

Я думаю, я все еще немного смущен - я мог бы обернуть весь этот «объект» в usercontrol и создать собственное свойство «Кому», это прекрасно. Однако где-то мне еще нужно будет установить (и снова установить) свойство «To» в моей раскадровке - что, как вы сказали, не связано. – Peanut

+0

@Peanut: После того, как вы создали UserControl для инкапсуляции этой специфической конфигурации пользовательского интерфейса, вы можете напрямую управлять элементом управления с помощью «code-behind». Иногда привязка просто не является ответом, и вам действительно нужно написать код, который выполняет эту работу. – AnthonyWJones

0

Если вы пытаетесь сделать это в стиле, вот почему он не работает. Silverlight заморозит его, потому что он доступен для всех экземпляров этого стиля.

Попробуйте поместить его в элемент, и это должно сработать.

+0

извините за то, что не показывал достаточно кода, но это не в стиле. Это, однако, в DataTemplate. (Я собираюсь иметь множество экземпляров объектов, которые должны быть анимированы) – Peanut

Смежные вопросы