1
我得到了這個UserControl,它是一個大約10行10列的Grid。每個單元格包含1個文本塊或1-6個圖像。 我想要做的是動畫化每一行上的所有元素以進行滑動。但是,我無法找到一種方法來動畫整個Grid.Row來做到這一點。Grid.Row上的動畫(全局偏移量)
我不能包裝在一個StackPanel /月的所有元素要麼因爲這將它們放入同一列...
任何人有一個解決的辦法?
謝謝
我得到了這個UserControl,它是一個大約10行10列的Grid。每個單元格包含1個文本塊或1-6個圖像。 我想要做的是動畫化每一行上的所有元素以進行滑動。但是,我無法找到一種方法來動畫整個Grid.Row來做到這一點。Grid.Row上的動畫(全局偏移量)
我不能包裝在一個StackPanel /月的所有元素要麼因爲這將它們放入同一列...
任何人有一個解決的辦法?
謝謝
所以我想出了一個工作解決方案,它工作。也許不是那麼優雅,但它的功能與Lumia 920設備的功能相當。
void CreateLoadAnimationForRow(int row, int startTime)
{
foreach (var child in LayoutRoot.Children.Cast<FrameworkElement>().Where(x => Grid.GetRow(x) == row))
{
AddToStoryboard(child, startTime);
}
}
void AddToStoryboard(FrameworkElement element, int startTime)
{
element.RenderTransform = new CompositeTransform();
var doubleAnimation = new DoubleAnimation
{
From = -200,
To = 0,
Duration = new Duration(TimeSpan.FromSeconds(1)),
BeginTime = TimeSpan.FromMilliseconds(startTime)
};
var objectAnimationUsingKeyFrames = new ObjectAnimationUsingKeyFrames()
{
BeginTime = TimeSpan.FromMilliseconds(startTime + 10)
};
var discreteObjectKeyFrame = new DiscreteObjectKeyFrame()
{
KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)),
Value = Visibility.Visible
};
objectAnimationUsingKeyFrames.KeyFrames.Add(discreteObjectKeyFrame);
IEasingFunction easingFunction = new SineEase();
easingFunction.Ease(2);
doubleAnimation.EasingFunction = easingFunction;
Storyboard.SetTarget(objectAnimationUsingKeyFrames, element);
Storyboard.SetTargetProperty(objectAnimationUsingKeyFrames, new PropertyPath("Visibility"));
Storyboard.SetTarget(doubleAnimation, element);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(FrameworkElement.RenderTransform).(CompositeTransform.TranslateX)"));
storyboardSlideIn.Children.Add(doubleAnimation);
storyboardSlideIn.Children.Add(objectAnimationUsingKeyFrames);
}
您是否嘗試過連接到網格本身的FluidMoveBehavior?我認爲它可以通過修改EaseIn來提供你正在尋找的東西。 – 2013-02-11 16:27:22
感謝您的提示。我玩了一小會兒,當你同時添加了很多元素時,它似乎不能很好地工作。動畫僅播放最後添加的元素,而以前沒有動畫。除此之外,您似乎無法控制元素從哪個方向來。我希望我的元素來自屏幕外,但我無法讓它工作。 – robertk 2013-02-12 06:38:57