C # WPF - Esperando que la página se cargue

He visto varios hilos en StackOverflow con respecto a este tema, sin embargo, ninguno de ellos parece proporcionar una respuesta.

Tengo un botón que, al hacer clic en él, abre una página web invisible, navega a una URL, ingresa información en un cuadro, presiona un botón y luego raspa la pantalla para obtener información.

Los huesos de mi código básicamente en el clic:

WebBrowser wb = new WebBrowser;
wb.Visibility = System.Windows.Visibility.Hidden;
wb.Navigate("http://somepage.com");

Y aquí es donde se pone complicado.

Estoy buscando una manera deasegurar que la página está cargada antes de intentar ingresar datos o raspar la pantalla. He visto varios hilos que hablan deNavigated, IsLoaded, LoadCompleted tanto comoBackgroundWork cosas, pero no puedo hacer que nada de esto funcione.

¿Cuál es la mejor opción para determinar que la página se ha cargado completamente? ¿Cómo conseguirías que el método elegido funcionara?

Tampoco puedo obtener los datos de la pantalla ya que WPF no usa el mismoGetElementByID.

Editar:

Por el comentario a continuación, aquí están los errores que me encuentro:

Navegue primero tan pronto como la página haya sido también navegada y no necesariamente espere hasta que todos los objetos estén cargados. Esto funciona según lo previsto, pero no puede utilizarse para mis propósitos.

IsLoaded nunca devuelve verdad

private void GetData_Click(object sender, RoutedEventArgs e)
{
  int x=0;
  HTMLDocument doc;

  wb = new WebBrowser();
  wb.Visibility = System.Windows.Visibility.Visible;
  wb.Navigate("somesite.com");

  doc = wb.Document as mshtml.HTMLDocument;

  while(!wb.IsLoaded)
  {
    //Wait
  }

  doc.getElementById("txt_One").innerText = "It Worked";

}

Lo pone en un bucle infinito comowb Nunca parece que se cargue.

Esta es la versión con LoadCompleted

El evento 'System.Windows.Controls.WebBrowser.LoadCompleted' solo puede aparecer en el lado izquierdo de + = o - =

    private void GetData_Click(object sender, RoutedEventArgs e)
    {
      int x=0;
      HTMLDocument doc;

      wb = new WebBrowser();
      wb.Visibility = System.Windows.Visibility.Visible;
      wb.Navigate("somesite.com");

      doc = wb.Document as mshtml.HTMLDocument;

      wb.LoadCompleted += wb_LoadCompleted;

      doc.getElementById("txt_One").innerText = "It Worked";

    }

    void wb_LoadCompleted(object sender, NavigationEventArgs e)
    {

    }

Produce el error

Se produjo una excepción no controlada del tipo 'System.NullReferenceException' en {filename}

Información adicional: Referencia de objeto no establecida en una instancia de un objeto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta