日期:2014-05-17  浏览次数:20865 次

关于wpf动画问题?
我在xaml中写一段动画,然后在事件触发中这样写可以触发事件:
  <EventTrigger SourceName="button1" RoutedEvent="Button.Click">
  <BeginStoryboard Name="closeQueryCanvasStoryboard" 
  Storyboard="{StaticResource 动画名}">
  </BeginStoryboard>
  </EventTrigger>
以上代码可以实现当button1单击时播放动画。
我现在的为问题是:如何在程序的运行过程中由代码自动触发动画呢,比如在程序执行过程中根据代码中的某一变量n是否等于10来确定是否播放动画,每当n从1加到10的时候就播放一次动画。

------解决方案--------------------
C# code
public partial class Window1 : Window
    {
        private Storyboard myStoryBoard; 

        public Window1()
        {
            InitializeComponent();

            this.RegisterName("TestButton1", TestButton1);
            DoubleAnimation da = new DoubleAnimation();
            da.From = 1.0;
            da.To = 0.0;
            myStoryBoard = new Storyboard();
            myStoryBoard.Children.Add(da);
            Storyboard.SetTargetName(da, "TestButton1");
            Storyboard.SetTargetProperty(da, new PropertyPath(Button.OpacityProperty));
        }

        private void TestButton_Click(object sender, RoutedEventArgs e)
        {
            myStoryBoard.Begin(this, true);
        }
    }

------解决方案--------------------
我这么试的一个,在后台调用好使,你试着改改。
挺长时间不用,有点忘了。
txttt.Begin();
C# code

<Rectangle Name="MyRectangle" Width="100" Height="100">
            <Rectangle.Fill>
                <SolidColorBrush x:Name="MySolidColorBrush" Color="Blue" />
            </Rectangle.Fill>
            <Rectangle.Triggers>
                <EventTrigger RoutedEvent="Page.Loaded">
                    <BeginStoryboard>
                        <Storyboard x:Name="txttt" RepeatBehavior="Forever" AutoReverse="True">
                            <DoubleAnimation 
                                Storyboard.TargetName="MyRectangle"
                                Storyboard.TargetProperty="Width"
                                From="100" To="200" Duration="0:0:1" />
                                            <ColorAnimation 
                                Storyboard.TargetName="MySolidColorBrush"
                                Storyboard.TargetProperty="Color"
                                From="Blue" To="Red" Duration="0:0:1" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Rectangle.Triggers>
        </Rectangle>