zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    How to install php 7.x on CentOS 7
    Azure新建的CentOS设置root账户的密码
    远程激活.NET REFLECTOR(不能断网)
    C# WebApi 配置复杂路由不生效的问题
    在Mac上激活Adobe产品
    WIN10更新后出现无法联网的问题
    Mac安装SSHFS挂载远程服务器上的文件夹到本地
    输入三个数值,输出其中的最大值和最小值
    登录接口,只为自己能尽快吐槽一下这段代码
    随手记
  • 原文地址:https://www.cnblogs.com/socialdk/p/2676675.html
Copyright © 2011-2022 走看看