首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载时淡入时RibbonWindow显示为黑色

加载时淡入时RibbonWindow显示为黑色
EN

Stack Overflow用户
提问于 2012-06-10 02:12:29
回答 1查看 393关注 0票数 0

我试图在加载RibbonWindow时显示淡入动画。

下面是我所做的:

代码语言:javascript
运行
复制
<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不是开始时是透明的,而是显示为黑色,并逐渐淡入。

导致此行为的原因是什么?我如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-10 15:05:48

问题是你的窗口不支持透明度。您可以在窗口标记上设置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.

因此,您只有两个选择:(如果您想要主窗口的淡入效果)

  • 为窗口创建自己的样式。它看起来不像一个普通的窗口,你需要指定它的边框,为它创建最小化/最大化/关闭按钮等。
  • 淡入该窗口,在动画完成后,在淡入窗口的顶部创建另一个相同的窗口。第二个窗口不会淡入,但它看起来与第一个窗口完全一样。在第一个窗口顶部显示第二个窗口后,可以关闭第一个窗口。

此外,这里有一个不需要在主窗口中淡入淡出的替代方案:

  • 为您的应用程序创建闪屏。你可以使用内置的WPF闪屏,或者通过AllowsTransparency="True"WindowStyle="None"创建一个常规窗口。您可以淡入(淡出)启动屏幕,然后显示主窗口,而不会淡入。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10963412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档