簡體   English   中英

WPF WebView2 錯誤 - 源屬性不能設置為 null

[英]WPF WebView2 Error - source property cannot be set to null

要驗證 API 服務,用戶需要登錄網頁。 如果登錄有效,則身份驗證代碼將附加到重定向的 Uri 的末尾。 然后在 oauth 中使用身份驗證代碼來獲取密鑰等......為了方便起見,我已經實現了 WebView2:

        <wv2:WebView2 Name="webView"
                  Width="800"
                  Height="500"
                  Source="{Binding WebUri, Mode=TwoWay}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SourceChanged">
                <i:InvokeCommandAction Command="{Binding SourceChangedCommand}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </wv2:WebView2>

我在視圖模型中有驗證邏輯來識別重定向 uri 何時包含身份驗證代碼; 這是通過在SourceChangedCommand上引發 SourceChanged 事件時調用的 SourceChangedCommand 完成的(遵循此處描述的導航事件生命周期)。 SourceChangedCommand.Execute如下:

    public void Execute(object? parameter)
    {
        if (ValidateUri(_viewModel.WebUri.ToString()))
        {
            var str = _viewModel.WebUri.ToString().Substring(50);
            _navigationService.Authenticate(str);
        }
    }

這是我遇到問題的地方:我還有一個 NavigationService,它在視圖模型之間導航並通過數據模板等更改視圖......當使用 WebView2 離開視圖時(即:更改父視圖上的數據上下文),我收到以下錯誤:

Source 屬性不能設置為 null

在此處輸入圖像描述

這非常令人困惑,因為 WebView2 的源實際上從未設置為 null - 它被維護為重定向的 Uri。 這里出了什么問題,我怎樣才能離開這個視圖?

我正在探索的可能解決方案是創建一個擴展 WebView2 的自定義控件,該控件具有映射到 WebView2.Dispose(bool) 的 bool 依賴項屬性 -> 如果為真,則將處理 webview。 然而,這似乎有點矯枉過正,可能會引發與ObjectDisposedException相關的其他問題。

我遇到了同樣的問題,發現這是因為我在綁定上設置了 IsAsync=true。

還要檢查您綁定到的屬性。 他們總是需要能夠得到一個不是 null 的值。

當我的屬性被初始化時,我將它們設置為 new Uri("about:blank")。
此外,使用 this._myProp = new UriBuilder(value).Uri?? 字段集上的 new Uri("about:blank") 以確保沒有空值

嘿 Microsoft 一個帶有 about:blank 的 static Uri.Empty 屬性怎么樣?

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM