Определите, загружает ли веб-браузер WPF страницу - PullRequest
1 голос
/ 20 июля 2011

У меня есть элемент управления WPF System.Windows.Controls.WebBrowser в окне. Пользователь может ввести информацию и нажать кнопку «Отправить» на веб-странице, отображаемой веб-браузером. После публикации страницы она использует объект сценария для связи с моим приложением. Мне нужно убедиться, что после нажатия кнопки «Отправить» форма не закрывается и не перестает ждать отправки веб-страницы. Было бы здорово, если бы я мог проверить состояние WebBrowser или его документа с помощью свойства, такого как «IsLoading», и отменить любые действия, если он загружается. Я не видел ничего подобного, поэтому подумывал установить флаг в событии Navigating и отменить его в событии Navigated или LoadCompleted, но есть случай, когда я щелкаю ссылку на веб-странице (связана с javascript, это не переходит на новую страницу), где навигация запускается, но Navigated и LoadCompleted никогда не запускаются. Есть ли способ определить состояние браузера по запросу?

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Согласно MSDN , если вызывается событие Navigating, то Navigated Event также будет запускаться, если вы явно не Отмените навигацию. Я попробовал приведенный ниже фрагмент кода, похоже, он работает нормально. (т.е.) всякий раз, когда событие Navigated запускается после события Navigating.

void Window1_Loaded(object sender, RoutedEventArgs e)
    {
        browser = new WebBrowser();
        browser.Navigate(new Uri("http://www.google.com"));
        browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating);
        browser.Navigated += new NavigatedEventHandler(browser_Navigated);
    }

    void browser_Navigating(object sender, NavigatingCancelEventArgs e)
    {
        Console.WriteLine("Loading Webpage !!");
    }

    void browser_Navigated(object sender, NavigationEventArgs e)
    {
        Console.WriteLine("Webpage Loaded !!");
    }

Если это не то, что вы ищете, укажите URL-адрес веб-страницы, с которой вы столкнулись с проблемой.

0 голосов
/ 09 августа 2011

Нет, по-видимому, нет способа запросить состояние браузера WPF по требованию. Я остановился на своей первоначальной идее установки собственного флага в обработчике событий Navigating и отмене его в обработчике событий Navigated. Он не работал надежно для меня, потому что был скрипт, который отменял навигацию (javascript: void (0)).

...