Предварительная загрузка страницы перед переходом на нее WPF - PullRequest
2 голосов
/ 23 октября 2010

Мое приложение 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 Ответ

2 голосов
/ 26 октября 2010

Похоже, 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...