我想在我的WinUI 3应用程序的“OnLauched”方法中添加一些闪屏(模态)窗口。
目前我只是示例化了我的主窗口,它的类型是“NavigationRootWindow”,如您所见:
protected override async void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
// Display splash screen with database check and user login
// If all is well: Proceed normally
// If database not available or login failed: Abort with application start / close application
// Display NavigationRootWindow (main window of the application)
NavigationRootWindow navigationRootWindow = new NavigationRootWindow();
m_window = navigationRootWindow;
m_window.Activate();
}
在此之前,我想做两件事(参见方法第一部分的注解):
1.检查数据库连接是否可用。
1.登录用户
我希望在一个单独的窗口中使用视图模型和执行检查的逻辑来完成这一操作,我确信我可以使用视图模型及其逻辑来实现该窗口。
但是,在示例化“NavigationRootWindow”之前,我无法显示任何类型的窗口/启动画面。如果登录成功,我需要在示例化“NavigationRootWindow”之前再次关闭启动画面/登录窗口。据我所知,我无法示例化另一个“Window”派生类型,因为只有一个应用程序窗口。
你能建议一种方法来显示从“OnLaunched”方法中触发的启动画面/一些模态对话框吗?此屏幕的结果将决定应用程序是否可以继续。我也欢迎其他建议。
谢谢你。
2条答案
按热度按时间pu3pd22g1#
Content
和DataContext
设置为“启动屏幕”Content
和DataContext
大概是这样的
tuwxkamq2#
我修改/扩展了用户mm 8的解决方案。
App
类的OnLaunched
方法中,我示例化了一个LoginUserControl
,它将临时替换窗口的内容,我在类的一个字段中记住了窗口的原始内容。OnLaunched
方法结束时,用户将看到以LoginUserControl
为内容的窗口。LoginUserControl
将通过UserLoggedIn
事件或UserAbortedLogIn
事件关闭。UserLoginSuccessful
事件,并将窗口内容重置为其原始内容(即用户登录后应看到的第一个内容)。