WPF 关于动画的束缚设置

  WPF中如果我设置完动画,再通过其他的设置来修改动画中的属性时,那这些属性就被锁住了,这时这个属性是不能够设置的。有很多种方法可以来把这个动画解锁。我做了一个小的Demo来设置这个值。

    <DockPanel LastChildFill="True">
        <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Name="cmdStart" Height="50" Width="100" Margin="10" Click="Button_Click">Start</Button>
            <Button Height="50" Width="100" Margin="10" Click="ButtonSet_Click">Set</Button>
            <Button Height="50" Width="100" Margin="10" Click="ButtonStop_Click">Stop</Button>
        </StackPanel>
        <Label DockPanel.Dock="Top" Name="label" HorizontalContentAlignment="Center" Content="{Binding ElementName=button,Path=Width}" Width="200" Height="200" FontSize="50"/>
        <Button Name="button" Width="0"/>
    </DockPanel>
    public partial class MainWindow : Window {
        PauseStoryboard story = new PauseStoryboard();
        DoubleAnimation animation = new DoubleAnimation();
        public MainWindow() {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e) {
            animation.From = 0;
            animation.To = 100;
            animation.Duration = TimeSpan.FromSeconds(5);
            button.BeginAnimation(Button.WidthProperty, animation);
        }

        private void ButtonStop_Click(object sender, RoutedEventArgs e) {
            var temp = (double)button.GetValue(Button.WidthProperty);
            button.BeginAnimation(Button.WidthProperty, null);
            button.Width = temp;
        }

        private void ButtonSet_Click(object sender, RoutedEventArgs e) {
            button.Width = 20;
        }
    }

  由上面的例子可以看到当我开始这个动画后,如果你直接点击Set的话这个属性是不能设置的。当你点击Stop时,如果你直接只用上这句话:

   button.BeginAnimation(Button.WidthProperty, null);

  那么设置将停止时,他的动画会回到原点,这样也可以继续设置值。而我上面的这个方法是使动画还在原来的位置停住,继而继续设置值。这两种根据个人的需要来选择。这个只是其中的一种。还有许多方法来设置值。可以参考下面这个blog,里面把所有的可能用到的停止方法都用到了:http://www.cnblogs.com/alamiye010/archive/2009/08/26/1554539.html

原文地址:https://www.cnblogs.com/socialdk/p/2676675.html