UWP 如何實現按需載入 XAML 界面

2021-02-25 09:53:53 +08:00
 imlinhanchao

最近因公司業務需要,需要將現有 Win32 軟體遷移至 UWP 平臺。因爲是硬體公司,其軟體涉及多個設備,不同設備均有其特定的界面。

若發佈的軟體包直接包含所有設備,則會導致軟體包過大。因此,產品 PM 提出要能做到當識別到用戶相關設備時,才通過下載或額外安裝的方式,使主體軟體框架可以支援操作對應設備。

從目前找到的資料看,這種方式有點類似 UWP 的可選包。但實際實驗發現,只能支持將後端邏輯代碼分離,而無法將 XAML 界面分離至可選包。

因此,在此請教各位大佬,是否有實現過類似功能,協助給予一些方向。感謝!

1757 次点击
所在节点    程序员
8 条回复
encro
2021-02-25 13:48:02 +08:00
xaml 界面能有多大呢?
一般来说是 res 资源图片之类比较大。

正确做法:将图片等资源放在网络上下载。
goobai
2021-02-25 14:18:45 +08:00
没学过反射吗?
janus77
2021-02-25 15:13:24 +08:00
支持 uwp 的系统应该不多吧,全部界面穷举出来能有多少?你的包体积真的会影响很大吗
另一个思路是直接打多个包,按需下载使用
ly841000
2021-02-25 15:18:24 +08:00
做成不同的 dll, 按需加载
imlinhanchao
2021-02-25 18:04:39 +08:00
@ly841000 UWP 不能動態載入 dll 。

@janus77 多打個包是指什麽?

@encro 還有一方面的考慮是有新增設備資源無需再去更新主程序框架,畢竟多個單位在維護。
ysc3839
2021-02-25 18:17:54 +08:00
用 Windows::UI::Xaml::Markup::XamlReader::Load 可以动态载入纯文本的 XAML 代码。不过代价是界面未经过编译,容易被复制。

或者考虑用 HTML 做界面?印象中 UWP 支持 HTML 界面。
cjw1115
2021-02-25 19:13:48 +08:00
看描述你们是要搞 DCHU, app 要做成 HSA....

主页面放一个 frame, 根据不同的设备型号 new 不同的 xaml page 作为 content 放进去, 就这思路。XAML+CS 很小的。
至于你的各种类型的资源比如 video,可以做成 optional package, 单独打包上传商店。

其次 XAML page 也是可以放在 universal DLL 里面的,实测过。
imlinhanchao
2021-02-25 20:53:12 +08:00
@cjw1115 有辦法引用可選包内的資源嗎?有沒有實例或文檔可以參考?我找到的基本上都是引用 Class 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/756056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX