【发布时间】:2010-07-26 07:52:47
【问题描述】:
我有一个 mvvm 模式的 wpf 应用程序。在主视图中,我与其他视图的链接很少。 但在主视图中显示内容(即......链接)之前,我需要在主视图中显示图像......这意味着......欢迎图像将首先显示给用户......比如说2秒...然后显示实际内容。
有人可以帮我吗?
【问题讨论】:
我有一个 mvvm 模式的 wpf 应用程序。在主视图中,我与其他视图的链接很少。 但在主视图中显示内容(即......链接)之前,我需要在主视图中显示图像......这意味着......欢迎图像将首先显示给用户......比如说2秒...然后显示实际内容。
有人可以帮我吗?
【问题讨论】:
最简单的解决方案是将图像添加到您的项目中,并在属性窗口中将其构建操作设置为SplashScreen。这将导致在您的应用程序加载时显示图像。
更多详情:How to: Add a Splash Screen to a WPF Application (MSDN)。
优点:
缺点:
【讨论】:
既然您说您希望图像显示在窗口中而不是“经典”初始屏幕中,让我添加第二个答案:在您的 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 属性设置动画(使用DoubleAnimation)而不是Visibility 属性。
【讨论】: