【发布时间】:2011-02-07 20:03:58
【问题描述】:
背景:
我有一个 WPF UserControl(MainControl - 未在下面的代码中显示),其中包含另一个(在下面的代码中称为 MyControl)。
MainControl 将其 DataContext 设置为具有项目属性的对象。 加载 MainControl 时,Project-property 始终为 null。
问题:
当 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>
【问题讨论】:
标签: wpf triggers properties opacity storyboard