首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当StatusBarItem的DataContext更改时动画化

当StatusBarItem的DataContext更改时动画化
EN

Stack Overflow用户
提问于 2014-01-03 15:38:21
回答 1查看 499关注 0票数 0

每当StatusBarItem的文本被更新时,我都想将其动画化,VisualState很好,如果我在MouseEnter事件中触发它,那么它就会播放;但是,在DataContextChanged事件期间,我无法让它播放。

代码语言:javascript
复制
<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>

我是这样更新DataContext的:

代码语言:javascript
复制
...
catch (Exception ex)
{
    var s = string.Format("Building preview for asset failed: {0}", ex.Message);
    StatusBarItem1.DataContext = s;
}

如果我听这个活动,它确实被称为:

代码语言:javascript
复制
StatusBarItem1.DataContextChanged += StatusBarItem1_DataContextChanged;
void StatusBarItem1_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
}

StatusBarItem文本发生变化时,我如何触发动画?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 15:45:58

请参阅this solution,这表明这需要在代码隐藏上完成,而不能在纯XAML中完成。问题并不完全相同,但通过手动启动动画,同样的解决方案应该适用于您。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20907260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档