• 在 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 控件的工作原理

  • BindingList的应用与改进

    在编写UI的过程中,我们通常使用ObservableCollection来监听列表的变化。然而,ObservableCollection只能在添加/移动/移除元素时通知界面,这意味着元素内部更改时,ObservableCollection是无法通知的

    如果需要监听列表元素内部的更改,可以使用System.ComponentModel.BindingList

    BindingList作用是将列表中元素内部的更改"转发"到外部。由于需要监听每个元素内部的属性更改,BindingList中的所有元素必须实现INotifyPropertyChanged

  • UWP开发:在一个应用中使用两套WinUI主题

  • 【UWP/XAML】合并资源字典时出现 Error HRESULT E_FAIL