WPF。如何通过具有约束力的停止数据触发动画? [英] WPF. How to stop data trigger animation through binding?

查看:292
本文介绍了WPF。如何通过具有约束力的停止数据触发动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在WPF工具包DataGrid中我有一个绑定到电池单元的不透明数据触发。

UpVisibility 更改为1的路径变得可见,动画开始褪色为0。其中一期工程。

不过我现在的问题 - 如果我需要prematurely停止/取消衰落和正在设置 UpVisibility 0的路径仍然可见,衰落什么都没有发生....

如何使用即时对象myvalue的砸不透明度为0?

 <路径数据=M 5,0 0,10 10,10HEIGHT =10WIDTH =10填充=绿色不透明度={结合myvalue的[0] .UpVisibility}​​保证金=5,0,5,0>
    < Path.Style>
        <样式和GT;
            < Style.Triggers>
                < D​​ataTrigger绑定={结合myvalue的[0] .UpVisibility}VALUE =1.0>
                    < D​​ataTrigger.EnterActions>
                        < BeginStoryboard>
                            <情节提要>
                                < D​​oubleAnimation是Storyboard.TargetProperty =透明度从=1.0为了=0.0时长=0:0:10/>
                            < /故事板>
                        < / BeginStoryboard>
                    < /DataTrigger.EnterActions>
                < / DataTrigger>
            < /Style.Triggers>
        < /样式和GT;
    < /Path.Style>
< /路径和GT;


解决方案

你有没有尝试过这样的事情(例如未经测试):

 <路径数据=M 5,0 0,10 10,10HEIGHT =10WIDTH =10填充=绿色不透明度={结合myvalue的[0] .UpVisibility}​​保证金=5,0,5,0>
    < Path.Style>
        <样式和GT;
            < Style.Triggers>
                < D​​ataTrigger绑定={结合myvalue的[0] .UpVisibility}VALUE =1.0>
                    < D​​ataTrigger.EnterActions>
                        < BeginStoryboard>
                            <情节提要>
                                < D​​oubleAnimation是Storyboard.TargetProperty =透明度从=1.0为了=0.0时长=0:0:10/>
                            < /故事板>
                        < / BeginStoryboard>
                    < /DataTrigger.EnterActions>
                    < D​​ataTrigger.ExitActions>
                        < BeginStoryboard>
                            <情节提要>
                                < D​​oubleAnimation是Storyboard.TargetProperty =不透明度为=0.0时长=0:0:0/>
                            < /故事板>
                        < / BeginStoryboard>
                    < /DataTrigger.ExitActions>
                < / DataTrigger>
            < /Style.Triggers>
        < /样式和GT;
    < /Path.Style>
< /路径和GT;

我的动画时间设置为0是瞬间。如果你没有定义你指导WPF到当前的DependencyProperty值开始从属性,所以它会平稳过渡。

In WPF toolkit datagrid I have a data trigger bound to opacity of cell element.

When UpVisibility changes to 1 the path become visible and the animation starts to fade it to 0. Which works.

However my problem now - if I need to prematurely stop/cancel the fading and am setting UpVisibility to 0 the Path is still visible and fading as nothing happened....

How to drop opacity to 0 instantly using MyValue object ?

<Path Data="M 5,0 0,10 10,10" Height="10" Width="10" Fill="Green" Opacity="{Binding MyValue[0].UpVisibility}" Margin="5,0,5,0">
    <Path.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyValue[0].UpVisibility}" Value="1.0">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:10" />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Path.Style> 
</Path>

解决方案

Have you tried something like this (untested example):

<Path Data="M 5,0 0,10 10,10" Height="10" Width="10" Fill="Green" Opacity="{Binding MyValue[0].UpVisibility}" Margin="5,0,5,0">
    <Path.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyValue[0].UpVisibility}" Value="1.0">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:10" />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                    <DataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.0" Duration="0:0:0" />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.ExitActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Path.Style>
</Path>

I set the animation duration to 0 to be instant. And if you don't define the From property you are instructing WPF to start in the current DependencyProperty value, so it will transition smoothly.

这篇关于WPF。如何通过具有约束力的停止数据触发动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆