2013-06-23 2 views
4

Я ищу способ изменения ширины столбца сетки (или высоты строки) с помощью анимации, определенной в Storyboard. Я уже нашел несколько решений для WPF приложений, но все они бесполезны в случае программирования Windows Store, например .:Изменение ширины/высоты сетки/высоты строки по анимации раскадровки в приложении Windows Store

Grid Column changing Width when animating

how to change the height of a grid row in wpf using storyboard

http://www.codeproject.com/Articles/18379/WPF-Tutorial-Part-2-Writing-a-custom-animation-cla

Является ли такой результат получен путем создания пользовательский класс, наследующий от Timeline? Если да, то какие компоненты должны быть переопределены для правильной реализации?

ответ

2

Вы должны быть в состоянии использовать простой DoubleAnimation. Обязательно установите EnableDependentAnimation=True, как показано на рисунке here.

Одна вещь, которую нужно реализовать при попытке разобраться в том, что ColumnDefinitions являются GridLengthstruct. Вы можете найти более подробную информацию о них here. Вам нужно будет настроить анимацию Value.

+0

Свойство GridLength.Value не имеет сеттера. Я считаю, что это также должно быть свойство зависимости для работы с DoubleAnimation. – grimus

+0

Ах, вы частично правы. 'GridLength' - это' struct', поэтому вам нужно установить 'Width' ColumnDefinition' в новую' Gridlength'. –

+0

Не могли бы вы привести пример кода, как это сделать с помощью DoubleAnimation? Было бы очень полезно и высоко оценено. – grimus

2

Вот пример метода анимации Grid ColumnDefinition MaxWidth.

private void Animate(ColumnDefinition column) 
    { 
     Storyboard storyboard = new Storyboard(); 

     Duration duration = new Duration(TimeSpan.FromMilliseconds(500)); 
     CubicEase ease = new CubicEase { EasingMode = EasingMode.EaseOut }; 

     DoubleAnimation animation = new DoubleAnimation(); 
     animation.EasingFunction = ease; 
     animation.Duration = duration; 
     storyboard.Children.Add(animation); 
     animation.From = 1000; 
     animation.To = 0; 
     animation.EnableDependentAnimation = true; 
     Storyboard.SetTarget(animation, column); 
     Storyboard.SetTargetProperty(animation, "(ColumnDefinition.MaxWidth)"); 

     storyboard.Begin(); 
    } 
+1

это не работает для приложений в магазинах Windows – Freakishly