Blazor Hybrid 實(shí)戰(zhàn)體驗(yàn):那些你可能沒預(yù)料到的坑
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
文件拖放事件的局限#Blazor Hybrid 的運(yùn)行環(huán)境是 WebView,這導(dǎo)致了在處理文件拖放時(shí)出現(xiàn)了一些限制。在傳統(tǒng)桌面應(yīng)用中(如 WinForms 或 WPF),開發(fā)者可以直接捕獲拖放事件,并獲得文件的完整路徑。但在 Blazor 中,拖放事件只能像瀏覽器中一樣處理,意味著我們只能獲得上傳文件的流,而無法獲取文件的實(shí)際路徑。 這對(duì)于那些需要直接訪問文件路徑的功能(如Clipify中把視頻拖進(jìn)去處理)帶來了很大的不便。 冗余代碼(不是)#看了項(xiàng)目代碼的同學(xué)可能會(huì)發(fā)現(xiàn),F(xiàn)ormMain.cs里還有處理拖放事件的代碼,不過實(shí)際上并沒有生效。
?解決方案目前的解決辦法有限,根據(jù)查找到的資料和我自己的探索,有以下幾種:
第3種方法的代碼大概是這樣(未驗(yàn)證)
社區(qū)反饋#同樣的問題我在 Github issues 和 Stack Overflow 之類的平臺(tái)也有看到很多人提出,不過看起來微軟并不想解決這些問題。 相關(guān)鏈接:
桌面應(yīng)用體驗(yàn)差異#Blazor Hybrid 盡管以桌面應(yīng)用的形式運(yùn)行,但表現(xiàn)更接近于網(wǎng)頁應(yīng)用。 瀏覽器的快捷鍵#一個(gè)明顯的例子是,在 WebView 中按下 F5 鍵時(shí),頁面會(huì)像瀏覽器一樣刷新,這種行為顯然不符合傳統(tǒng)桌面軟件的用戶體驗(yàn)。 在類似的技術(shù)中,如 Electron,也存在類似的局限。但不同的是,Electron 提供了更多對(duì)瀏覽器行為的控制手段,可以阻止或重定義這些行為,而 Blazor Hybrid 目前則沒有這些更細(xì)粒度的控制能力。 從桌面應(yīng)用的角度來看,用戶希望獲得一致且原生的操作體驗(yàn),因此這些細(xì)微的差異可能會(huì)影響開發(fā)者對(duì) Blazor Hybrid 應(yīng)用的期望。 窗口大小調(diào)整的表現(xiàn)在使用 Blazor Hybrid 時(shí),我還注意到窗口大小調(diào)整的流暢度問題。相比起原生的桌面應(yīng)用,Blazor Hybrid 的表現(xiàn)不盡如人意。當(dāng)用戶調(diào)整窗口大小時(shí),界面偶爾會(huì)出現(xiàn)黑邊或畫面撕裂的現(xiàn)象。 這種問題不僅在 Blazor Hybrid 中出現(xiàn),實(shí)際上,在瀏覽器(chrome)和 Electron 應(yīng)用(QQ)中,我也觀察到類似的問題。 為了更深入地理解這個(gè)現(xiàn)象,我還測(cè)試了 C++ 原生應(yīng)用,結(jié)果發(fā)現(xiàn)原生應(yīng)用在調(diào)整窗口大小時(shí)相對(duì)來說更流暢,沒有出現(xiàn)黑邊或撕裂的問題。 我猜測(cè)造成這種差異的原因可能在于,Blazor Hybrid 和 Electron 依賴 WebView 作為渲染引擎,而 WebView 的渲染機(jī)制在處理窗口大小調(diào)整時(shí)不如原生 UI 渲染引擎高效。 小結(jié)#Blazor Hybrid 是一個(gè)非常有潛力的技術(shù),它讓 C# 開發(fā)者能夠輕松地構(gòu)建跨平臺(tái)桌面應(yīng)用。 然而,在使用過程中,我發(fā)現(xiàn)了一些需要關(guān)注的問題,尤其是在拖放事件、桌面應(yīng)用行為一致性和窗口大小調(diào)整表現(xiàn)上。 轉(zhuǎn)自https://www.cnblogs.com/deali/p/18458357 該文章在 2025/1/17 10:23:25 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |