Avalonia ui是一个令人愉快的框架,您想一遍又一遍。 因此,让我们再次回到它,并查看一些功能以及我的消息框。

谁是阿瓦隆?
Avalonia是一个跨平台框架,可让您在所有相关平台上开发图形界面。
在结构上,它非常接近wpf:相似的xaml,相似的粘合剂。 甚至有WPF开发人员的官方
教程 。
Avalonia在以下每个系统上均指代本机接口:Win32,MonoMac,X11 ...
更新版本中出现了什么- 支持13种不同的消息图标。
- 使用组合键Cntrl + C复制消息正文的能力。
- 将窗口的大小调整为其内容。
- 简化的样式系统,使那些希望轻松参与新开发和支持的人可以使用。
- 用TextBox替换TextBlock,现在可以选择窗口中的文本。
- 该架构本身已被完全重新设计。

该文档可以在
gitlab上
找到 。
包本身可以从
nuget下载。
让我们谈谈功能和芯片紫花苜蓿
显然,如果存在比较,那么它将与wpf进行比较。
在ms框架之后引起您注意的第一件事是将命令绑定到方法的能力。 是的,从功能上讲,这提供了较少的机会,但是作为响应,它简化了开发视图模型的方法。
<Button Command="{Binding RunTheThing}" CommandParameter="Hello World"> Do the thing! </Button>
public void RunTheThing(string parameter) {
Avalonia还使用反应性扩展来构建,它允许您使用LINQ查询的声明性语法将框架事件作为第一类的对象进行处理-允许您编写简洁易懂的代码。
但是再深入一点,一切都不会变得那么乐观和明显,并且文档还没有想到(但是您可以提供帮助)。
绑定到图像
更新项目时,我几乎立即遇到的问题是如何在窗口上显示图像。
首先,您需要将带有图像的目录注册为Avalonia资源,因为任何用户都必须显示图标并方便地将所有代码打包在一起,这一点很重要。
<ItemGroup> ... <AvaloniaResource Include="Assets\*" /> </ItemGroup>
现在,在图像标签中,您可以轻松设置所选图像。
<Image Source="/Assets/error.ico" />
但是,当使用vm Source时,不能将图像简单地附加到字符串,而必须使用位图。
<Image Source="{Binding ImagePath}" />
public Bitmap ImagePath { get; private set; }
因此,现在我们需要从资源中提取图像。 为什么要使用Avalonia定位器?
ImagePath = new Bitmap(AvaloniaLocator.Current.GetService<IAssetLoader>() .Open(new Uri($" avares://ASSEMBLYNAME/relative/project/path/{ImageName}.ico")));
值得注意的是,对于编译uri时的嵌入式资源,使用前缀
resm:// ,对于avalonia-
avares:// 。
画图
雪崩和wpf的形状相似,但公共属性不同。 因此,下载svg映像并将其使用mskam转换为ms xaml时,无法立即使用它们。
定制图
<PathGeometry Figures="M30 53 C15.641 53 4 41.359 4 27S15.641 1 30 1s26 11.641 26 26c0 7.135-2.874 13.599-7.528 18.297" FillRule="NonZero"/>
变成:
<GeometryDrawing Brush="#FF50C8EF" Geometry="M30 53 C15.641 53 4 41.359 4 27S15.641 1 30 1s26 11.641 26 26c0 7.135-2.874 13.599-7.528 18.297" />
一行:
<Line X1="25" Y1="37" X2="25" Y2="39" StrokeThickness="2" Stroke="#FFFFFFFF" StrokeMiterLimit="10" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
变成:
<Line StartPoint="25,37" EndPoint="25,39" StrokeThickness="2" Stroke="#FFFFFFFF" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
款式
有关样式本身的信息,请参见
文档 。 值得注意的是,这些是一些带有CSS的熟悉样式。 我想展示如何从单独的文件中应用样式。 首先,所有xaml文件必须是雪茄资源。
<ItemGroup> <AvaloniaResource Include="**\*.xaml"> <SubType>Designer</SubType> </AvaloniaResource> ..... </ItemGroup>
其次,使用uri和locator以与图像资源相同的方式应用样式。
YourControl.Styles.Add(new StyleInclude(new Uri("avares://ASSEMBLYNAME/relative/project/path.xaml")){Source = new Uri("avares://ASSEMBLYNAME/relative/project/path.xaml")});
好东西
TextBox具有水印属性。 这使您不必搜索第三方程序包,也不会阻止TextBox顶部的TextBlock,在很多wpf教程中都可以阅读该内容。
<TextBox Watermark="Street address" />
同样,所有活页夹默认情况下都使用PropertyChanged来触发相关属性的更新。
总结
我建议大家尝试这个有趣的框架。 感谢
Artyom Gorchakov和
Nikita Tsukanov的用户 。
我想提醒您,金龟子对
Gitter有很好的支持。