在 Avalonia 中编写高性能动画
在 Avalonia 框架中,我们通常使用 XAML 编写动画。然而,实际上 Avalonia 中还存在另一套鲜为人知(?)的动画系统——Composition Animation(合成动画)
本文将介绍如何在 Avalonia 中编写合成动画,以及它相比普通 XAML 动画的优点
为 Avalonia 启用平滑滚动与缩放
在 Avalonia 中,
ScrollViewer在鼠标滚轮下是没有平滑滚动的,看起来非常生硬。同时,ScrollViewer也不支持平移、缩放等操作,这使得社区不得不使用为 PanAndZoom 等第三方控件为此,我编写了 SmoothScroll.Avalonia 库,可以为应用中的所有
ScrollViewer一键启用平滑滚动支持。同时,库中提供的ScrollView控件(继承自ScrollViewer)还增加了平移和缩放功能Avalonia源码解读:Grid(网格控件)
在各类XAML UI框架中,
Grid是一种非常灵活且常用的布局控件,它可以创建复杂的用户界面布局。Grid允许开发者通过定义行和列来组织界面元素,每个元素可以精确地放置在网格的特定区域内本文以 Avalonia 框架为例,讲解
Grid控件的工作原理LeetCode 138(随机链表的复制)解答以及官方题解中的一个问题
BindingList的应用与改进
在编写UI的过程中,我们通常使用
ObservableCollection来监听列表的变化。然而,ObservableCollection只能在添加/移动/移除元素时通知界面,这意味着元素内部更改时,ObservableCollection是无法通知的如果需要监听列表元素内部的更改,可以使用
System.ComponentModel.BindingList。BindingList作用是将列表中元素内部的更改"转发"到外部。由于需要监听每个元素内部的属性更改,BindingList中的所有元素必须实现INotifyPropertyChanged为Avalonia应用自动生成StyledProperty和DirectProperty
最近学习了源生成器,遂仿照CommunityToolkit/Windows中的DependencyPropertyGenerator写了个生成器,可自动生成Avalonia中的
StyledProperty和DirectProperty用代码写代码:使用Roslyn API构建语法树并应用于源生成器
在上文构建源生成器的过程中,我们使用字符串直接插入代码。这样做固然方便快捷,但字符串需要手动格式化,且无法检测拼写错误,这对需要生成复杂结构的源生成器项目很不友好。
本文将介绍生成代码的另一种方式:使用Roslyn API构建语法树。
C# 源生成器(Source Generator)入门
C#9 引入了一个强大的机制:源生成器(Source Generator)。通过创建源生成器,我们可以简化大量重复编写的代码,或是减少反射来获得更强的性能以及AOT支持
本文将介绍如何从零开始创建一个最简单的源生成器
C# 13前瞻:Extensions
UWP开发:修复Win10上ListView样式不正确的问题
在Windows 11下,使用WinUI2.6以上版本的
ListView长这样:
然而到了Win10上,尽管其他控件的样式没有改变,但ListViewItem变成了默认样式(初代Fluent) 最重大的问题是,Win10上的HorizontalAlignment未被设置成Stretch,可能造成严重的UI错位(隔壁livelyweather也有这个问题)。
这疑似是Win10上未使用正确的资源造成的。
在WPF/MAUI中使用x:Bind
最近逛GitHub的时候的时候,偶然看到了CompiledBindings这个库,据说可以实现和UWP中x:Bind一样的效果
原理也是在编译时生成相关代码,性能应该比自带的Binding好些
UWP开发:在一个应用中使用两套WinUI主题
【UWP/XAML】合并资源字典时出现 Error HRESULT E_FAIL