Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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# WPF如果ViewModel中的布尔值为true,如何跳过动画结束?_C#_Wpf_Wpf Controls_Wpf Animation - Fatal编程技术网

C# WPF如果ViewModel中的布尔值为true,如何跳过动画结束?

C# WPF如果ViewModel中的布尔值为true,如何跳过动画结束?,c#,wpf,wpf-controls,wpf-animation,C#,Wpf,Wpf Controls,Wpf Animation,我的WPF应用程序中有一个带有动画的屏幕。我需要动画只运行一次用户会话。这意味着,如果用户第一次看到带有动画的屏幕,它将播放,但当用户返回屏幕时,它将处于最终状态(跳过到结尾) 我的ViewModel中有一个布尔值,它保存所有用户/会话逻辑,它指示动画是否应该运行,或者应该在最后一帧显示 如何仅使用XAML实现这种类型的绑定/功能?一个简单的解决方案是将bool Prop绑定到绑定的Duration属性 现在,您需要一个将布尔值转换为时间跨度的转换器,如下所示: public object Co

我的WPF应用程序中有一个带有动画的屏幕。我需要动画只运行一次用户会话。这意味着,如果用户第一次看到带有动画的屏幕,它将播放,但当用户返回屏幕时,它将处于最终状态(跳过到结尾)

我的ViewModel中有一个布尔值,它保存所有用户/会话逻辑,它指示动画是否应该运行,或者应该在最后一帧显示


如何仅使用XAML实现这种类型的绑定/功能?

一个简单的解决方案是将bool Prop绑定到绑定的Duration属性

现在,您需要一个将布尔值转换为时间跨度的转换器,如下所示:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    bool showAnimation = (bool)value;
    return (showAnimation ) ? new TimeSpan(0,0,5) : new TimeSpan(0,0,0);
}
编辑:通过Sheridan回答中提到的
SkipStoryboardToFill
,您可以执行以下操作:

            <DataTrigger Binding="{Binding Path=EnableStoryboard}" Value="False">
                <DataTrigger.EnterActions>
                    <SkipStoryboardToFill BeginStoryboardName="BeginStoryboard"></SkipStoryboardToFill>
                </DataTrigger.EnterActions>
            </DataTrigger>


但是,只有在BeginStoryboard运行时更改bool属性时,此操作才有效。

您可能需要查看MSDN上的页面以获取答案。链接页面上有一个很好的示例,它全面解释了如何操作
情节提要
对象。从链接的示例中:

<EventTrigger RoutedEvent="Button.Click" SourceName="SkipToFillButton">
    <SkipStoryboardToFill BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>


用户要求提供XAML解决方案。。。幸运的是,我不是那种喜欢因为一点点原因而否决投票的白痴。嗯。。幸运的是,我的代码中已经有一个SwitchCase Covnerter,所以我想我可以在不添加任何新代码的情况下使用它……我需要将它绑定到一个布尔值,布尔值应该覆盖BeginStoryboard事件。所以这对我没有好处,但是祝你好运。。。或者,您可以创建自己的
RoutedEvent
,并在设置
Boolean
property.WPF时引发它。太多的管道了我完全不同意。。。正是你所说的“管道”让它变得如此多才多艺。如果你不喜欢,不要用它。。。您可以重新使用易怒的旧WinForms