在Windows Phone的同时故事板7
我已经到处我能想到的,但我不能找到这个问题的答案...在Windows Phone的同时故事板7
我要让一种模板,故事板为Windows Phone 7(XAML和c#),然后使用该故事板以同样的方式动画多个对象。 (即同时旋转所有物体90度)任何想法?
它必须动态完成。我的意思是我想在程序中给不同的对象分配几个不同的故事板,所以它不能是静态的。
我一直面临的主要问题是故事板必须停止再使用,因此它们不能同时运行。但是我在想,如果我可以制作Storyboard的临时副本,那么我可以同时运行它们吗?请给我任何你有的想法。提前致谢!
我初始化我在一个网格对象(矩形)这样:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Rectangle Name="rec1" Height="80" Width="10" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,30,140,0">
<Rectangle.RenderTransform>
<RotateTransform x:Name="rec1Transform" Angle="0" CenterX="5" CenterY="-10" />
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Name="rec2" Height="10" Width="80" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,15,55,0">
.
.
.
</Rectangle>
</Grid>
在这一刻,有我,我想通过多次使用4个一般的故事板,和我使用的是一系列的按钮模仿所有的动画。例如:
我的展板
private void rotate1(object parameter, object secondParameter, String Target)
{
oneTwo.Stop();
oneTwo.Children[0].SetValue(Storyboard.TargetNameProperty, Target);
oneTwo.Begin();
}
private void rotate2(object parameter, object secondParameter, String Target)
{
twoThree.Stop();
twoThree.Children[0].SetValue(Storyboard.TargetNameProperty, Target);
twoThree.Begin();
}
private void rotate1Inverse(object parameter, object secondParameter, string Target)
{
twoOne.Stop();
twoOne.Children[0].SetValue(Storyboard.TargetNameProperty, Target);
twoOne.Begin();
}
private void rotate2Inverse(object parameter, object secondParameter, string Target)
{
threeTwo.Stop();
threeTwo.Children[0].SetValue(Storyboard.TargetNameProperty, Target.ToString());
threeTwo.Begin();
}
我的模拟按钮
//Rotate Buttons
private void button_Click1(object sender, RoutedEventArgs e)
{
rec1Transform.CenterY = -10;
rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec1Transform");
}
private void button_Click2(object sender, RoutedEventArgs e)
{
rec2Transform.CenterX = -10;
rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec2Transform");
}
private void button_Click3(object sender, RoutedEventArgs e)
{
rec3Transform.CenterY = -10;
rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec3Transform");
}
private void button_Click4(object sender, RoutedEventArgs e)
{
rec4Transform.CenterX = -10;
rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec4Transform");
}
private void button_Click5(object sender, RoutedEventArgs e)
{
rec5Transform.CenterY = -10;
rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec5Transform");
}
private void button_Click6(object sender, RoutedEventArgs e)
{
rec6Transform.CenterX = -10;
rotate2(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec6Transform");
}
private void button_Click7(object sender, RoutedEventArgs e)
{
rec7Transform.CenterY = -10;
rotate1(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec7Transform");
}
//Inverse Rotate Buttons
private void button_Click1_Inverse(object sender, RoutedEventArgs e)
{
rec1Transform.CenterY = 90;
rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec1Transform");
}
private void button_Click2_Inverse(object sender, RoutedEventArgs e)
{
rec2Transform.CenterX = 90;
rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec2Transform");
}
private void button_Click3_Inverse(object sender, RoutedEventArgs e)
{
rec3Transform.CenterY = 90;
rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec3Transform");
}
private void button_Click4_Inverse(object sender, RoutedEventArgs e)
{
rec4Transform.CenterX = 90;
rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec4Transform");
}
private void button_Click5_Inverse(object sender, RoutedEventArgs e)
{
rec5Transform.CenterY = 90;
rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec5Transform");
}
private void button_Click6_Inverse(object sender, RoutedEventArgs e)
{
rec6Transform.CenterX = 90;
rotate1Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec6Transform");
}
private void button_Click7_Inverse(object sender, RoutedEventArgs e)
{
rec7Transform.CenterY = 90;
rotate2Inverse(RotateTransform.AngleProperty, PlaneProjection.RotationZProperty, "rec7Transform");
}
的问题是,我想在多达20个矩形在同时使用这4个基本的故事板一次,从而使所有20个矩形一致动画。但我不想为每个矩形分配一个静态故事板,因为我想应用于每个矩形的故事板每隔一秒左右就会改变一次。我也将同时使用所有4个故事板。 (即我将使用“oneTwo”为3个矩形,“twoThree”为5个矩形,“twoOne”为8个矩形,“threeTwo”为2个矩形)
我希望所有说得通。该计划仅基于同时动画多个矩形,任何帮助或建议将不胜感激。
尝试矩形绑定在一个StackPanel
<Listbox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel.Resources>
<Storyboard x:Name="FirstStoryBoard">
<DoubleAnimation Storyboard.TargetName="rectangle"
Storyboard.TargetProperty="Width"
From="0"
To="1"
//AutoReverse="True"
Duration="00:00:01" />
</Storyboard>
</StackPanel.Resources>
<Rectangle Name="rectangle" Fill={Binding colour}>
</Rectangle>
</StackPanel>
</ListBox.ItemTemplate>
</DataTemplate>
</Listbox>
然后必须在列表框与colours..refer在列表框中的项目在网络绑定绑定。
然后用一个按钮点击启动故事板。故事板儿童矩形增加其宽度
FirstStoryboard.begin();
我对Listbox非常熟悉,它是否可用于Windows Phone 7?因为Visual Studio 2010无法在xaml中识别它。 – Jason 2012-08-10 02:52:12
如何显示布局中的所有对象。以适当的顺序,如列表或网格或不当。如果你想以适当的方式显示绑定图像到一个堆叠面板并生成动画 – 2012-08-01 06:37:09
我现在在上面张贴了我的矩形代码,但是如何能够动画所有的堆栈面板中的对象是否在同一时间? – Jason 2012-08-02 02:46:36
对不起,我必须是愚蠢的或某事,但我仍然无法弄清楚这一点。有人可以帮忙吗? – Jason 2012-08-07 17:44:22