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 BlazorWebView
Windows 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 檔:
- .NET MAUI
- WPF
- Windows Forms
Windows Forms 和 WPF 應用程式中未處理的例外狀況
本節僅適用于Windows Forms和 WPF Blazor Hybrid 應用程式。
在 屬性上建立 的 UnhandledException
System.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 無法與這類影像互動。
如需詳細資訊,請參閱下列資源:
- Xamarin.Forms 字串和影像當地語系化:指導方針通常適用于 Blazor Hybrid 應用程式。 目前不支援每個案例。
- Blazor 無法透過 HTTP 端點存取的影像元件, (dotnet/aspnetcore #25274)