在导航到WPF之前预加载页面

时间:2010-10-22 21:00:18

标签: wpf navigation

我的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的人能帮我一个忙吗?谢谢你!

1 个答案:

答案 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);