Wpf 两个故事板设置不透明度属性时发生冲突?

Wpf 两个故事板设置不透明度属性时发生冲突?,wpf,triggers,properties,opacity,storyboard,Wpf,Triggers,Properties,Opacity,Storyboard,背景: 我有一个WPF用户控件(MainControl-未在下面的代码中显示),其中包含另一个(在下面的代码中称为MyControl) MainControl将其DataContext设置为具有项目属性的对象。 加载MainControl时,项目属性始终为空 问题: 加载MainControl时,我希望使用一个特殊的情节提要在MyControl中淡入淡出(只使用了一次(这个“specialFadeInStoryboard”将MyControl的不透明度属性从0更改为1) 当项目属性设置为null

背景:

我有一个WPF用户控件(MainControl-未在下面的代码中显示),其中包含另一个(在下面的代码中称为MyControl)

MainControl将其DataContext设置为具有项目属性的对象。 加载MainControl时,项目属性始终为空

问题:

加载MainControl时,我希望使用一个特殊的情节提要在MyControl中淡入淡出(只使用了一次(这个“specialFadeInStoryboard”将MyControl的不透明度属性从0更改为1)

当项目属性设置为null以外的值时,我希望MyControl使用“fadeOutStoryboard”(将MyControl的不透明度属性更改为0)淡出,如果之后设置为null,我希望这次使用“fadeInStoryboard”(将MyControl的不透明度属性更改为1)再次淡入

然而,在为“specialFadeInStoryboard”添加代码之后,MyControl永远不会消失

我做错了什么

<local:MyControl Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Opacity, Converter={StaticResource opacityToVisibilityConverter}, Mode=OneWay}">
    <local:MyControl.Style>
        <Style>
            <Style.Triggers>
                <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                    <BeginStoryboard Storyboard="{StaticResource specialFadeInStoryboard}"/>
                </EventTrigger>
                <DataTrigger Binding="{Binding Project, Converter={StaticResource nullToBooleanConverter}, Mode=OneWay}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource fadeOutStoryboard}"/>
                    </DataTrigger.EnterActions>
                    <DataTrigger.ExitActions>
                        <BeginStoryboard Storyboard="{StaticResource fadeInStoryboard}"/>
                    </DataTrigger.ExitActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </local:MyControl.Style>
</local:MyControl>

在其他淡入淡出的故事板开始运行之前,您可能需要停止
specialFadeInStoryboard
。您可以通过以下方式完成此操作:

<DataTrigger.EnterActions>
    <StopStoryboard BeginStoryboardName="specialFadeInStoryboard"/>
    <BeginStoryboard Storyboard="{StaticResource fadeOutStoryboard}"/>
</DataTrigger.EnterActions>

在其他淡入淡出的故事板开始运行之前,您可能需要停止
specialFadeInStoryboard
。您可以通过以下方式完成此操作:

<DataTrigger.EnterActions>
    <StopStoryboard BeginStoryboardName="specialFadeInStoryboard"/>
    <BeginStoryboard Storyboard="{StaticResource fadeOutStoryboard}"/>
</DataTrigger.EnterActions>


感谢您的回复,但是当Entreaction被激发时,标签会给我这个错误:InvalidOperationException:“specialFadeInStoryboard”名称在“System.Windows.Style”的名称范围内找不到。我甚至尝试过移动情节提要,使其成为…的子项,但这也不起作用:(通过创建af样式和“模板”的Setter解决了这个问题。模板的值是ControlTemplate,其中所有情节提要都在“ControlTemplate.Resources”中定义)第节…感谢您的回复,但当EnterActions为fires:InvalidOperationException时,标记给我此错误:“specialFadeInStoryboard”名称在“System.Windows.Style”的名称范围内找不到。我甚至尝试移动情节提要,使其成为…的子项,但这也不起作用:(通过创建af样式解决了这个问题,为“模板”设置了一个Setter。模板的值是ControlTemplate,其中所有故事板都在“ControlTemplate.Resources”部分中定义。。。