动画打破了绑定

时间:2015-09-29 09:00:22

标签: c# wpf data-binding wpf-animation

我有一个ComboBox,其Opacity属性具有以下绑定:

Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}"

基本上,如果IsMouseOver属性为true,则ComboBox的{​​{1}}为1,否则为0.4。

现在我将此动画应用于Opacity

ComboBox

这很有效,但之后private void AnimateComboBox() { DoubleAnimation da = new DoubleAnimation(); da.From = 0.4; da.To = 1; da.Duration = TimeSpan.FromSeconds(0.8); da.AutoReverse = true; ComboClassList.BeginAnimation(ComboBox.OpacityProperty, da); } 的绑定不再起作用了。当我将鼠标移到ComboBox上时,Opacity不会发生变化。为什么动画会破坏我的装订? Snoop说,绑定仍然存在,尽管它在Snoop中突出显示为红色。

1 个答案:

答案 0 :(得分:6)

默认情况下,动画持有最终属性值。要更改它,请将其FillBehavior属性设置为Stop

var animation = new DoubleAnimation
{
    From = 0.4,
    To = 1,
    Duration = TimeSpan.FromSeconds(0.8),
    AutoReverse = true,
    FillBehavior = FillBehavior.Stop
};

当动画结束时,属性将被设置回绑定提供的值。