动画打破了绑定

Tim*_*ler 1 c# data-binding wpf wpf-animation

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

Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}"
Run Code Online (Sandbox Code Playgroud)

基本上,如果IsMouseOver属性是真的,那就ComboBox有了Opacity为1,否则为0.4.

现在我将此动画应用于 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);  
}
Run Code Online (Sandbox Code Playgroud)

这很好,但之后绑定ComboBox不再起作用.在Opacity当我移动我的鼠标在不改变StackPanel.为什么动画会破坏我的装订?Snoop说,绑定仍然存在,尽管它在Snoop中突出显示为红色.

Cle*_*ens 7

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

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

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