动画打破绑定
Animation breaks binding
我有一个 ComboBox
,其 Opacity
属性 具有以下绑定:
Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}"
基本上,如果 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);
}
效果不错,但之后 ComboBox
的绑定就不再起作用了。当我将鼠标移到 StackPanel
上时,Opacity
没有改变。为什么动画会破坏我的绑定? Snoop 说,绑定仍然存在,尽管它在 Snoop 中以红色突出显示。
动画默认保持最终的 属性 值。要更改它,请将其 FillBehavior
属性 设置为 Stop
:
var animation = new DoubleAnimation
{
From = 0.4,
To = 1,
Duration = TimeSpan.FromSeconds(0.8),
AutoReverse = true,
FillBehavior = FillBehavior.Stop
};
动画结束时,属性 将设置回绑定提供的值。
我有一个 ComboBox
,其 Opacity
属性 具有以下绑定:
Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}"
基本上,如果 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);
}
效果不错,但之后 ComboBox
的绑定就不再起作用了。当我将鼠标移到 StackPanel
上时,Opacity
没有改变。为什么动画会破坏我的绑定? Snoop 说,绑定仍然存在,尽管它在 Snoop 中以红色突出显示。
动画默认保持最终的 属性 值。要更改它,请将其 FillBehavior
属性 设置为 Stop
:
var animation = new DoubleAnimation
{
From = 0.4,
To = 1,
Duration = TimeSpan.FromSeconds(0.8),
AutoReverse = true,
FillBehavior = FillBehavior.Stop
};
动画结束时,属性 将设置回绑定提供的值。