C# 动画中断绑定
我有一个C# 动画中断绑定,c#,wpf,data-binding,wpf-animation,C#,Wpf,Data Binding,Wpf Animation,我有一个组合框,其不透明度属性具有以下绑定: Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}" 基本上,如果IsMouseOver属性为true,则组合框的不透明度为1,否则为0.4 现在,我将此动画应用于组合框: private void AnimateComboBox() { DoubleAnimation da = ne
组合框
,其不透明度
属性具有以下绑定:
Opacity="{Binding ElementName=stackPanel, Path=IsMouseOver, Converter={StaticResource mouseOverConverter}}"
基本上,如果IsMouseOver
属性为true,则组合框的不透明度为1,否则为0.4
现在,我将此动画应用于组合框
:
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);
}
这很好,但是之后,组合框的绑定就不再有效了。当我将鼠标移到堆叠面板上时,不透明度
不会改变。为什么动画会破坏我的绑定?Snoop说,绑定仍然存在,尽管它在Snoop中高亮显示为红色。默认情况下,动画保留最终属性值。要更改此设置,请将其FillBehavior
属性设置为Stop
:
var animation = new DoubleAnimation
{
From = 0.4,
To = 1,
Duration = TimeSpan.FromSeconds(0.8),
AutoReverse = true,
FillBehavior = FillBehavior.Stop
};
动画结束时,属性将设置回绑定提供的值。默认情况下,动画保留最终属性值。要更改此设置,请将其FillBehavior
属性设置为Stop
:
var animation = new DoubleAnimation
{
From = 0.4,
To = 1,
Duration = TimeSpan.FromSeconds(0.8),
AutoReverse = true,
FillBehavior = FillBehavior.Stop
};
当动画结束时,属性将被设置回绑定提供的值。我删除了我的答案,因为我忽略了问题。单向绑定中断似乎不是这种情况。请澄清您的问题,为什么要在代码中添加动画,而它已经通过在XAML中设置工作了?当然,在代码中设置动画后,通过XAML设置的所有值都将被覆盖。我删除了我的答案,因为我错过了这个问题。单向绑定中断似乎不是这种情况。请澄清您的问题,为什么要在代码中添加动画,而它已经通过在XAML中设置工作了?当然,在代码中设置动画后,通过XAML设置的所有值都将被覆盖。看这个是的,这正是我要找的!非常感谢:)是的,这正是我要找的!非常感谢:)