1

背景:

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

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

问题:

当 MainControl 加载时,我想使用特殊的情节提要淡入 MyControl(仅使用一次(此“specialFadeInStoryboard”将 MyControl 的 Opacity-property 从 0 更改为 1)。

当 Project-property 设置为 null 以外的值时,我希望 MyControl 使用“fadeOutStoryboard”淡出(将 MyControl 的 Opacity-property 更改为 0),如果之后将其设置为 null,我想再次淡入这次使用“fadeInStoryboard”(将 MyControl 的 Opacity-property 更改为 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>
4

1 回答 1

1

您可能需要specialFadeInStoryboard在其他褪色情节提要开始运行之前停止。你可以这样做:

<DataTrigger.EnterActions>
    <StopStoryboard BeginStoryboardName="specialFadeInStoryboard"/>
    <BeginStoryboard Storyboard="{StaticResource fadeOutStoryboard}"/>
</DataTrigger.EnterActions>
于 2010-04-14T21:36:39.593 回答