我的WPF应用包含NavigationWindow
,然后是一组Page
定义为单独的xaml文件。 NavigationWindow依次加载并显示各种页面。
我的问题是加载页面很昂贵而且可能会失败。因此,我想在后台预加载页面,然后只有在页面加载完成后才调用Navigate()
。
在伪代码中我想要的是
Page nextPage;
try
{
nextPage = LoadPageFromURI(new URI(...));
}
catch
{
/// constructor of the page threw an exception ... load a different page
}
myNavigationWindow.Navigate(nextPage);
然而,我无法找到框架功能来做我想做的事情。知道WPF的人能帮我一个忙吗?谢谢你!
答案 0 :(得分:2)
看起来Application.LoadComponent()
会做我想做的事。
示例代码:
Page page;
try
{
page = (Page) Application.LoadComponent(new Uri(path, UriKind.Relative));
}
catch (Exception ex)
{
// note error and abort
}
Action action = () => ((NavigationWindow)Application.Current.MainWindow).Navigate(page);
Application.Current.Dispatcher.BeginInvoke(action, DispatcherPriority.Normal);