Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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/14.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上的BeginStorybard_C#_Wpf_Datatrigger_Wpf Animation - Fatal编程技术网

C# 数据触发器WPF上的BeginStorybard

C# 数据触发器WPF上的BeginStorybard,c#,wpf,datatrigger,wpf-animation,C#,Wpf,Datatrigger,Wpf Animation,当我的应用程序启动时,我正在使用一个过渡动画 <Storyboard x:Key="InTransition"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ContentGrid" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDouble

当我的应用程序启动时,我正在使用一个过渡动画

<Storyboard x:Key="InTransition">
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ContentGrid" Storyboard.TargetProperty="(UIElement.Opacity)">
                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="00:00:05" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="00:00:05.5000000" Value="1"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ContentGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="-72"/>
                <SplineDoubleKeyFrame KeyTime="00:00:05" Value="-157"/>
                <SplineDoubleKeyFrame KeySpline="0.5,0,0.5,1" KeyTime="00:00:05.5000000" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
</Storyboard>
如果我将其作为EventTrigger RouteEvent=FrameworkElement.Loaded启动,则效果良好,但我希望将其绑定到viewModel上名为IsInitialized的属性。问题是Windows。触发器不允许DataTrigger


我该怎么做

您不能在触发器集合中使用DataTrigger,这是正确的。相反,您需要使用UIElement.Style.Triggers集合。然后,您可以使用DataTrigger.EnterActions元素来承载故事板元素:


在触发器集合中不能使用DataTrigger是正确的。相反,您需要使用UIElement.Style.Triggers集合。然后,您可以使用DataTrigger.EnterActions元素来承载故事板元素:


我已经尝试过了,但我的动画包含Storyboard.TargetName属性,当使用样式时会引发异常,样式中的Storyboard树无法指定TargetName。删除TargetName。我不认为我可以删除TargetName,因为我的故事板动画了很多元素…你把你的故事板放错了样式。。。将其移动到先前在Storyboard.TargetName属性中引用的元素。我尝试过这样做,但我的动画包含Storyboard.TargetName属性,使用样式时会引发异常,样式中的Storyboard树无法指定TargetName。删除TargetName。我不认为我可以删除TargetName,因为我的故事板动画了很多元素…你把你的故事板放错了样式。。。将其移动到先前在Storyboard.TargetName属性中引用的元素。
<Window ...>
    <Window.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding YourProperty}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard ... />
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Style>
</Window>