2

我有一个 mvvm 模式的 wpf 应用程序。在主视图中,我与其他视图的链接很少。但是在主视图中显示内容(即......链接)之前,我需要在主视图中显示一个图像......这意味着......一个欢迎图像将首先显示给用户......比如说2秒……然后显示实际内容。

有人可以帮我吗?

4

3 回答 3

1

最简单的解决方案是将图像添加到您的项目并SplashScreen在属性窗口中设置它的构建操作。这将导致在您的应用程序加载时显示图像。

更多详细信息:如何:将启动画面添加到 WPF 应用程序 (MSDN)

好处:

  • 这很容易并且需要零编码。
  • 它显示在启动过程的早期,即,当 WPF DLL 仍在加载时。

缺点:

  • 您无法控制启动画面的显示时间。如果您需要这样做,您可以直接使用SplashScreen 类
于 2010-07-26T07:56:24.560 回答
0

MSDN 上的 SplashScreen 类文章 如何:将启动画面添加到 WPF 应用程序

于 2010-07-26T07:57:19.613 回答
0

既然您说您希望图像显示在窗口中而不是“经典”初始屏幕中,让我添加第二个答案:在您的 WPF 窗口中,执行以下操作:

<Window ...>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Window.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="mySplash" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:2" Value="{x:Static Visibility.Hidden}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="myContent" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Hidden}" />
                        <DiscreteObjectKeyFrame KeyTime="0:0:2" Value="{x:Static Visibility.Visible}" />
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>
    <Grid>
        <Image x:Name="mySplash" ... />
        <Grid x:Name="myContent">
            ...
        </Grid>
    </Grid>
</Window>

这将显示您Image的两秒钟,然后将其隐藏并显示myContent网格的内容。如果您想要从初始图像到内容的良好淡入淡出,您可以为Opacity属性设置动画(使用 a DoubleAnimation)而不是Visibility属性。

于 2010-07-26T09:56:01.597 回答