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

  • 相关阅读:
    水平时间轴 html + css
    position:fixed 属性在iphone 中不起作用
    placeholer 换行
    单选 复选按钮 样式
    vux 中popup 组件 Mask 遮罩在最上层问题的解决
    vux 表单提交数据 返回后页面跳转
    前端 js 发送验证码
    前端 js 实现简单 表单提交
    vux 获取后台数据
    装饰模式之AOP之动态改变参数,和原函数绑定属性丢失
  • 原文地址:https://www.cnblogs.com/socialdk/p/2676675.html
Copyright © 2011-2022 走看看