欢迎光临
我们一直在努力

只改一行代码,WPF能在Ubuntu桌面下运行了?

大家好呀,我是搬砖工.

我们这里今天下雨了,突然以下就变凉了.大家注意加衣服呀.

欢迎大家观今天的WPF最新资讯

先看个演示动图,感受下Linux下的WPF震撼吧

ubuntu

WPF从诞生时,是个优美的框架.界面美观可定制,功能强大可扩展.宇宙目前最强IDE VS也是用它来开发的.一直以来.各路神仙都想将Windows独有的此项绝技,移植到其他平台

目前大体上有两种方式

  • 语法相近,但不完全相似.方便你快速入手.又可以夹带自己理念.的佼佼者Uno,Avalonia.还有后起之秀Jalium.UI
  • 完全兼容,几乎不需要修改源码,强大兼容.目前所知就是XPF(同样由AvaloniaUI团队开发). 第二种对老项目来说,肯定是最好的.但是很不幸.XPF要价不菲.商业产品.

感谢AI时代吧,它的到来.把以前很多不可能变成了可能.今天的主角登场

https://github.com/wieslawsoltes/LibreWPF

LibreWPF 是什么

LibreWPF 试图打破这一限制。它 fork 自上游 dotnet/wpf,在保持 WPF 托管代码完全不动的前提下,把"仅限 Windows"的渲染层逐层替换为基于 ProGPU / WebGPU / Silk.NET 的跨平台实现。最关键的一点是:用户只需修改一行 SDK 引用,无需改动任何 XAML 或 C# 源码,即可让现有 WPF 应用获得跨平台运行能力。

关键组件

组件角色关键能力
WebGpu W3C 标准化的 GPU API 屏蔽 D3D12 / Vulkan / Metal 差异
ProGpu 基于 WebGPU 的渲染引擎 场景图、矢量、文本、命中测试、效果、WebShader
Silk.NET .NET 跨平台原生绑定 统一封装 X11 / Cocoa / Win32 / Wayland / OpenGL / Vulkan

替换关键

在这里插入图片描述 LibreWPF 与原生 WPF 在架构上的对照关系。核心思路是"上层复用、下层替换":WPF 的托管代码层(应用、控件、XAML、绑定、主题、布局)原封不动,只把 Windows-only 的渲染层逐层替换。

例子

我们这次使用VirtualizingWrapPanel来做演示

选他有几个原因

1.VWP足够稳定.经受考验 2.虚拟化是个很好的检验渲染的例子.

通过足够复杂的Lib看看LibreWPF具体有几分成色.

安装Ubuntu

这一步省略了.直接下载最新的26.04版本ISO文件通过VM Ware Pro安装即可.

这里截图展示下我们配置

在这里插入图片描述

安装dotnet SDK

参考链接:os-linux-ubuntu-2604

Bash中输入以下指令:

sudo apt-get update && \\
sudo apt-get install -y dotnet-sdk-10.0

等几分钟安装完成.之后查看下安装结果:

dotnet –list

在这里插入图片描述

查看下当前安装的sdk.确定为10.0版本即可

Clone 项目

git clone https://github.com/sbaeumlisberger/VirtualizingWrapPanel

安装gcc

需要gcc编译一部分so文件夹.所以,直接安装下

sudo apt-get install -y gcc

修改项目文件

真的只有一行.将Sdk从Microsoft.NET.Sdk更改为LibreWPF.Sdk/0.1.0-preview.45 在这里插入图片描述

编译项目

在Sample文件夹下运行:

dotnet run -p:EnableWindowsTargeting=true

成果

在这里插入图片描述

滑动.下拉,右键菜单都没问题.因为我的4G内存.也没啥显卡.和Ubuntu系统应用差不多.

发现一点问题:

Combox的下拉位置不太对.可能与我缩放分辨率有关.准备提个Bug给作者.

今天分享实战内容到此结束.谢谢大家观看.

期待朋友们的点赞关注和留言互动.

赞(0)
未经允许不得转载:171主机测评 » 只改一行代码,WPF能在Ubuntu桌面下运行了?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址