V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imlinhanchao
V2EX  ›  程序员

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

  •  
  •   imlinhanchao ·
    imlinhanchao · Feb 25, 2021 · 2369 views
    This topic created in 1887 days ago, the information mentioned may be changed or developed.

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

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

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

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

    Supplement 1  ·  Apr 14, 2021

    问题已解决,最后发现可选包是可行的。整理了做法文章:
    https://my.hancel.org/2021/03/08/uwp-optional-package.html

    8 replies    2021-02-25 20:53:12 +08:00
    encro
        1
    encro  
       Feb 25, 2021
    xaml 界面能有多大呢?
    一般来说是 res 资源图片之类比较大。

    正确做法:将图片等资源放在网络上下载。
    goobai
        2
    goobai  
       Feb 25, 2021 via Android
    没学过反射吗?
    rb6221
        3
    rb6221  
       Feb 25, 2021
    支持 uwp 的系统应该不多吧,全部界面穷举出来能有多少?你的包体积真的会影响很大吗
    另一个思路是直接打多个包,按需下载使用
    ly841000
        4
    ly841000  
       Feb 25, 2021
    做成不同的 dll, 按需加载
    imlinhanchao
        5
    imlinhanchao  
    OP
       Feb 25, 2021
    @ly841000 UWP 不能動態載入 dll 。

    @janus77 多打個包是指什麽?

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

    或者考虑用 HTML 做界面?印象中 UWP 支持 HTML 界面。
    cjw1115
        7
    cjw1115  
       Feb 25, 2021
    看描述你们是要搞 DCHU, app 要做成 HSA....

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

    其次 XAML page 也是可以放在 universal DLL 里面的,实测过。
    imlinhanchao
        8
    imlinhanchao  
    OP
       Feb 25, 2021
    @cjw1115 有辦法引用可選包内的資源嗎?有沒有實例或文檔可以參考?我找到的基本上都是引用 Class 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 03:18 · PVG 11:18 · LAX 20:18 · JFK 23:18
    ♥ Do have faith in what you're doing.