我有一个WPF浏览器应用程序,它有一个StartupUri =“StartPage.xaml”
并在该页面的构造函数中,我正在检查它是否可以
连接到服务器上的数据库。
现在,如果它失败了,我想停止加载该页面并导航到另一个页面
麻烦是 - “当页面引发Loaded事件时,页面只能获得对其NavigationService的引用。” (http://msdn.microsoft.com/en-us/library/ms750478.aspx)
......当Loaded被提升时,页面已经“开始显示”,
这意味着如果我从Loaded事件导航到另一个页面,它仍然会显示第一页
(非常简短地说)在加载第二页之前。
那么,我该怎样阻止这个呢?
因为我知道它在构建时不应该早点出现,所以 但那时的NavigationService为null。如果它不是我的应用程序启动时加载的第一个页面,那么这不会有问题。也许我可以在App:Application类(当前为空)中测试连接,然后决定StartupUri应该是什么。如果这是一个好方法,请提供一个小例子。 编辑:挖掘机
答案 0 :(得分:1)
您提到的方法 - 将数据库检查应用程序的OnStartup
方法 - 将起作用。但是,当您进行数据库查找时,阻止UI,预启动会是一种可怕的UX。最好首先导航到启动画面或其他东西,作为启动页面,并根据需要从那里导航。