.net core 跨平台UI框架 Avalonia

作为一名后端开发,UI始终是个最头疼的事,写过QT/HTML/VC/ANDROID之类的界面,都没有WPF写起来那么顺畅,所以一直都在想WPF要是能跨平台就好了。没想到,梦想还真的实现了,还是开源的,还跨了所有平台,这就是Avalonia,似乎挺新的,大致看了下,理念和设计都很前卫。

官网:http://www.avaloniaui.net/http://www.avaloniaui.net/

创建跨平台的代码框架:

Running in the Browser

Run in the browser with WebAssembly

It is currently very early days and not ready for production, however if you want to test this exciting new feature please take the following steps.

  • 2.

    Install or update the dotnet templates to the latest version (0.10.11 or above).

1

dotnet new -i avalonia.templates

Copied!

  • 1.

    Create a new directory for the project.

1

mkdir WebTest

2

cd WebTest

Copied!

  • 1.

    Generate a new project that supports running in the browser.

1

dotnet new avalonia.xplat

首先看下代码结构:

 和WPF几乎一致,在MainView.axaml编写即可,只不过有一个很大的差异,就是由于是跨平台的,所以有单窗口和多窗口的概念。由于设计的问题,如果要支持web的话,是不能多窗口的,意味着web只能在一个窗口上加载,这确实是个很头痛的问题,和正常的web设计思路很不一样。倒是可以通过远端拉取xaml来动态加载,来触发不同的区域渲染,例如:

using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace test.Views
{
    public partial class MainView : UserControl
    {
        public MainView()
        {
            InitializeComponent();
            var xaml =
       @"<UserControl xmlns='https://github.com/avaloniaui'
    xmlns:local='clr-namespace:Avalonia.Markup.Xaml.UnitTests.Xaml;assembly=Avalonia.Markup.Xaml.UnitTests'><Button>click!</Button>
</UserControl>";
            var target = AvaloniaRuntimeXamlLoader.Parse<UserControl>(xaml);
            g1.Children.Add(target);
        }
    }
}

虽然可以在场景下,按需加载,但avalonia设计有个很头痛的问题是,我看他底层用的是自己的渲染器在web上渲染,并非是去转换为html/css代码,也就导致每个窗口都需要他的引擎加载,从而在设计上,很难去进行多窗口的跳转。如果直接按windows的方法去new Window()显示,在桌面上是没问题的,在web下会直接显示不支持该方法。这也可能是目前写的web还处在测试阶段,可能有一些问题还没解决。当然,这样的设计按道理来说,会获得与客户端几乎一致的体验,以及超乎常理的稳定性。

还有个比较麻烦的问题,就是对中文的支持不太友好,主要是字体的问题,目前web中文暂时没找到解决方案,可能需要修改源码,比较头痛。涉及中文项目开发慎用

总体来说,这还是一个很棒的框架,特别是如果本身熟悉WPF,那就几乎不需要去学习。移动端还没有来得及试试,后面如果有需要会去尝试,相信其发展会越来越健壮

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值