WebBrowser.Source.AbsuloteUri返回null,但是我初始化了源

问题描述

我有一个简单的窗口,有两个控件:Webbrowser和TextBox

<TextBox Name="uriTextBox"/>
<Webbrowser Name="webPageWebbrowser"/>

以及带有构造函数的MainWindow.xaml.cs:

public MainWindow()
    {
        InitializeComponent();
        webPageWebbrowser.source = new Uri("https://google.com");
        uriTextBox.Text = webPageWebbrowser.source.AbsoluteUri;
    }

因此,webPageWebbrowser.source引发异常:

System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Windows.Controls.Webbrowser.source.get returned null.

我该怎么办?

解决方法

加载后尝试访问源文件

public MainWindow()
    {
        InitializeComponent();
        webPageWebBrowser.Source = new Uri("https://google.com");
        webPageWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
    }


private void wb_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)
{
   uriTextBox.Text = webPageWebBrowser.Source.AbsoluteUri;
}

从文档中:

设置source属性会使WebBrowser导航到Uri指定的文档。如果Uri为空,则显示空白文档(“ about:blank”)。

所以我假设在加载之前源为空。