ASP.NET Core Blazor Hybrid

本文說明 ASP.NET Core Blazor Hybrid,這是在 ASP.NET Core 應用程式中使用 .NET 建置互動式用戶端 Web UI 的方式。

使用 Blazor Hybrid 搭配 .NET 和 Blazor 混合桌面與行動原生用戶端架構。

在 Blazor Hybrid 應用程式中,會在裝置上以原生方式執行 Razor 元件。 元件會透過本機 Interop 通道轉譯至內嵌的 Web View 控制項。 元件不會在瀏覽器中執行,而且不會涉及 WebAssembly。 Razor 元件會快速載入及執行程式碼,而元件可透過 .NET 平台完整存取裝置的原生功能。 在 中 Web View 呈現的元件樣式與平臺相關,而且可能需要您考慮使用自訂樣式表單跨平臺呈現差異。

Blazor Hybrid 文章涵蓋將 Razor 元件整合到原生用戶端架構的相關主題。

Blazor Hybrid 應用程式與 .NET MAUI

Blazor Hybrid 支援內建於 .NET Multi-platform App UI (.NET MAUI) 架構中。 .NET MAUI 包含允許將 Razor 元件轉譯成內嵌 Web View 的 BlazorWebView 控制項。 藉由將 .NET MAUI 與 Blazor 一起使用,您可以跨行動裝置、桌面和 Web 重複使用一組 Web UI 元件。

具有 WPF 和 Windows Forms 的 Blazor Hybrid 應用程式

Blazor Hybrid 應用程式可以使用 Windows Presentation Foundation (WPF)Windows Forms 來建置。 Blazor提供 BlazorWebView 這兩個架構的控制項, (WPF BlazorWebViewWindows Forms BlazorWebView) 。 Razor 元件會在 Windows 桌面中以原生方式執行,並轉譯成內嵌的 Web View。 在 WPF 和 Windows Forms 中使用 Blazor,可讓您將新的 UI 新增至現有的 Windows 傳統型應用程式,而這些應用程式可在具有 .NET MAUI 或網路上的平台之間重複使用。

Web View 設定

Blazor Hybrid 會透過 BlazorWebView 控制項的事件來公開不同平台的基礎 Web View 設定:

  • 如果設定可供使用,則 BlazorWebViewInitializing 會提供存取每個平台上用來建立 Web View 的設定。
  • BlazorWebViewInitialized 可讓您存取 Web View,以允許進一步設定設定值。

在每個平台上使用慣用的模式將事件處理常式附加至事件,以執行您的自訂程式碼。

API 檔:

Windows Forms 和 WPF 應用程式中未處理的例外狀況

本節僅適用于Windows Forms和 WPF Blazor Hybrid 應用程式。

在 屬性上建立 的 UnhandledExceptionSystem.AppDomain.CurrentDomain 回呼。 下列範例會使用 編譯器指示詞 來顯示 , MessageBox 通知使用者發生錯誤,或向開發人員顯示錯誤資訊。 在 中 error.ExceptionObject 記錄錯誤資訊。

AppDomain.CurrentDomain.UnhandledException += (sender, error) =>
{
#if DEBUG
    MessageBox.Show(text: error.ExceptionObject.ToString(), caption: "Error");
#else
    MessageBox.Show(text: "An error has occurred.", caption: "Error");
#endif
    
    // Log the error information (error.ExceptionObject)
};

全球化和當地語系化

本節僅適用于 .NET MAUIBlazor Hybrid 應用程式。

.NET MAUI 會 CurrentCulture 根據裝置的環境資訊來設定 和 CurrentUICulture

IStringLocalizer 命名空間中的其他 API Microsoft.Extensions.Localization 通常會如預期般運作,以及依賴使用者文化特性的全球化格式、剖析和系結。

在執行時間動態變更應用程式文化特性時,必須重載應用程式以反映文化特性的變更,這會負責重新呈現根元件,並將新的文化特性傳遞至重新呈現的子元件。

.NET 的資源系統支援將當地語系化影像內嵌 (為 blob) 到應用程式中,但 Blazor Hybrid 目前無法在元件中 Razor 顯示內嵌影像。 即使使用者使用 ResourceManager 將影像的位元組讀入 Stream ,架構目前不支援在元件中轉譯擷取的 Razor 影像。

包含當地語系化影像的平臺特定方法是的功能。NET 的資源系統,但 Razor 應用程式中元件的瀏覽器元素 .NET MAUIBlazor Hybrid 無法與這類影像互動。

如需詳細資訊,請參閱下列資源:

其他資源