首页 新闻 会员 周边 捐助

wpf动画与数据绑定如何配合?

0
悬赏园豆:20 [已解决问题] 解决于 2016-09-07 12:13

  众所周知,在wpf中,使用模型绑定可以控制元素的依赖属性变化,但是这样的效果是瞬变的(比如元素的高度),而大多动画方案,都是在前台xaml中指定元素名使用DoubleAnimation其使其具有渐变的效果,但是若将已经后台绑定的属性应用于动画,这貌似会解除绑定关系.那么该怎样做才可以既不解除绑定关系,又能使绑定的依赖属性的变化是渐变的呢?例子如下:

前台:

<StackPanel>

<Rectangle height ="{Binding Height}" x:Name="rect" />

<Button Content="Change"/>

</StackPanel>

 

 

ViewModel:

...

private double height = 400;

public double Height{

  get{

    return height;

  }

  set{

    height = value;

    NotifyPropertyChanged(nameof(Height));

  }

}

 

...

那么我现在想实现的是按钮点击后,Rectangle的高度从400变为200,有一点动画过程,那么我该怎样做才能使Rectangle的高度变化既有渐变效果,也不会使其丢失与后台属性的绑定关系呢?

.NetDomainer的主页 .NetDomainer | 菜鸟二级 | 园豆:336
提问于:2016-08-21 08:45
< >
分享
最佳答案
0

可以这么搞

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            DoubleAnimation heightAnimation = new DoubleAnimation(50, 100, new Duration(TimeSpan.FromSeconds(0.8)));

            Self.BeginAnimation(Button.HeightProperty, heightAnimation);
        }

 

 Rectangle 可以在以command 参数的方式传递到ViewModel.

Height继续保留绑定,在改变的时候在后台创建故事版。

有点破环MVVM的感觉。哈哈哈

收获园豆:10
Darren.Dai | 菜鸟二级 |园豆:329 | 2016-08-29 15:23
其他回答(1)
0

你可以逐渐变化高度,比如400,过一定时间,减少高度385,再过一定时间,370,,,以此类推

收获园豆:10
悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-21 09:34

那就得设置时钟什么的,反而更加麻烦了。

支持(0) 反对(0) .NetDomainer | 园豆:336 (菜鸟二级) | 2016-09-07 12:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册