Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在StatusBarItem的DataContext更改时设置其动画_C#_Wpf_Xaml_Blend - Fatal编程技术网

C# 在StatusBarItem的DataContext更改时设置其动画

C# 在StatusBarItem的DataContext更改时设置其动画,c#,wpf,xaml,blend,C#,Wpf,Xaml,Blend,我想设置一个StatusBarItem的动画,每当它的文本被更新时,VisualState是好的,如果我在MouseEnter事件中触发它,它就会播放;但是,我无法在DataContextChanged事件期间播放它 <Window.Resources> <Color x:Key="ColorRed">Red</Color> </Window.Resources> <VisualStateManager.VisualStateGro

我想设置一个
StatusBarItem
的动画,每当它的文本被更新时,
VisualState
是好的,如果我在
MouseEnter
事件中触发它,它就会播放;但是,我无法在
DataContextChanged
事件期间播放它

<Window.Resources>
    <Color x:Key="ColorRed">Red</Color>
</Window.Resources>

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="VisualStateGroup">
        <VisualState x:Name="Animate">
            <Storyboard AutoReverse="True">
                <ColorAnimationUsingKeyFrames Storyboard.TargetName="StatusBarItem1" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
                    <EasingColorKeyFrame KeyTime="0:0:0.2" Value="{StaticResource ColorRed}" />
                </ColorAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

<StatusBarItem x:Name="StatusBarItem1" Content="{Binding TargetNullValue='Placeholder'}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="DataContextChanged">
            <ei:GoToStateAction StateName="Animate" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</StatusBarItem>
如果我听到这个事件,它确实被称为:

StatusBarItem1.DataContextChanged += StatusBarItem1_DataContextChanged;
void StatusBarItem1_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
}

StatusBarItem
文本发生更改时,如何触发动画?

请参见,这表明这需要在后面的代码上完成,而不能在纯XAML中完成。问题并不完全相同,但手动启动动画时,同样的解决方案也适用于您。

我希望有一种更优雅的方法,但它可以有效地工作,谢谢!
StatusBarItem1.DataContextChanged += StatusBarItem1_DataContextChanged;
void StatusBarItem1_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
}