AvaloniaUI:MessageBox示例的功能

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



谁是阿瓦隆?


Avalonia是一个跨平台框架,可让您在所有相关平台上开发图形界面。

在结构上,它非常接近wpf:相似的xaml,相似的粘合剂。 甚至有WPF开发人员的官方教程

Avalonia在以下每个系统上均指代本机接口:Win32,MonoMac,X11 ...

更新版本中出现了什么
  1. 支持13种不同的消息图标。
  2. 使用组合键Cntrl + C复制消息正文的能力。
  3. 将窗口的大小调整为其内容。
  4. 简化的样式系统,使那些希望轻松参与新开发和支持的人可以使用。
  5. 用TextBox替换TextBlock,现在可以选择窗口中的文本。
  6. 该架构本身已被完全重新设计。



该文档可以在gitlab找到

包本身可以从nuget下载。

让我们谈谈功能和芯片紫花苜蓿


显然,如果存在比较,那么它将与wpf进行比较。

在ms框架之后引起您注意的第一件事是将命令绑定到方法的能力。 是的,从功能上讲,这提供了较少的机会,但是作为响应,它简化了开发视图模型的方法。

<Button Command="{Binding RunTheThing}" CommandParameter="Hello World"> Do the thing! </Button> 

 public void RunTheThing(string parameter) { // Code for executing the command here. } 

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 GorchakovNikita Tsukanov的用户

我想提醒您,金龟子对Gitter有很好的支持。

Source: https://habr.com/ru/post/zh-CN455896/


All Articles