我正在尝试在加载RibbonWindow时显示淡入动画。
这就是我的所作所为:
<ribbon:RibbonWindow.Resources>
<Storyboard x:Key="FadeInOnLoad">
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2" FillBehavior="HoldEnd" >
<DoubleAnimation.EasingFunction>
<QuinticEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</ribbon:RibbonWindow.Resources>
<ribbon:RibbonWindow.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource FadeInOnLoad}"/>
</EventTrigger>
</ribbon:RibbonWindow.Triggers>
但不是开始透明,RibbonWindow显示为黑色并淡入。
什么可能导致此行为,我该如何解决?
答案 0 :(得分:1)
问题是您的Window不支持透明度。您可以在Window标记上设置AllowsTransparency="True"
属性。但是,为了设置该属性,您还需要设置WindowStyle="None"
,否则会收到错误WindowStyle.None is the only valid value for WindowStyle when AllowsTransparency is true.
一旦你设置了这两个属性,你的窗口就会很好地淡入淡出,并且不再是黑色。但是,窗口没有边框,因为WindowStyle
设置为None
。它看起来像这样:
此外,在故事板完成后,您将无法在代码中更改WindowStyle,因为您将收到此错误:Cannot change AllowsTransparency after a Window has been shown or WindowInteropHelper.EnsureHandle has been called.
所以,你有两个选择:(如果你想要主窗口的淡入效果)
此外,这里有一个不需要在主窗口中淡出的替代方案:
AllowsTransparency="True"
和WindowStyle="None"
创建常规窗口。你可以淡入(和淡出)那个闪屏,然后显示你的主窗口而不会褪色。