我正在尝试在加载应用程序时加载启动画面。 LoadSplashScreen是一个委托命令,用于检查是否已经有另一个程序正在运行,如果没有,则显示初始屏幕。
但是要检查属性,我需要在加载App.xaml时触发一个命令。
它向我显示“触发器不能附加到Application类型的元素” 我认为其他错误也与第一个错误有关,在第一个错误中,触发器绑定只能是“ DependencyObject”的派生类型。
这是xaml代码:
<Application x:Class="FST.CWI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModel="clr-namespace:FST.CWI.Sources.ViewModel"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
StartupUri="MainWindow.xaml"
xmlns:interactivity="http://schemas.microsoft.com/expression/2010/interactivity">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadSplashScreen}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Application.Resources>
<viewModel:BaseViewModel x:Key="BaseVM" />
<viewModel:AppViewModel x:Key="AppVM" />
<viewModel:GeneralViewModel x:Key="GeneralVM" />
<viewModel:SteeringViewModel x:Key="SteeringVM" />
<viewModel:AdvancedViewModel x:Key="AdvancedVM" />
<viewModel:SittingViewModel x:Key="SittingVM" />
</Application.Resources>
</Application>
答案 0 :(得分:0)
Wpf具有垃圾屏幕功能,也许您可以使用它:
它可以显示图像,直到出现MainWIndow。
答案 1 :(得分:0)
应用程序不是依赖对象,所以不要尝试使用依赖于它的任何东西。因为那根本行不通。
从打开主窗口的app.xaml中删除启动URL。 而是将其指向app.xaml.cs中的onstartup的替代项
<Application …
Startup="OnStartup">
当然还有您在app.xaml.cs中的代码
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Your logic here
}
在此处输入和重新显示您的逻辑,显示任何窗口或您喜欢的任何内容。
看起来会很像:
SplashScreen ss = null;
if ( your criteria goes here)
{
ss = new SplashScreen("whatever.bmp");
ss.Show();
}
MainWindow mw = new MainWindow();
if ( your criteria goes here )
{
ss.Close();
}
mw.Show();