• Surface Book 3 评测

    十年前的夏天,我在某个酒店前台看到了一台蓝色Surface Pro 4。他与当时一众傻大黑粗的Windows笔记本似乎完全不是同一个世界的。这也是我头一次知道,原来电脑还能触屏,甚至可以把键盘拆下来。轻便、优雅、与众不同——这是我对Surface系列的第一印象

    从此我便对这个系列产生了浓厚的兴趣。后来我在网上看到了Surface Book初代的宣传片,屏幕从底座分离的那一刻给我的震撼,不亚于Dario首次体验Claude Mythos时被吓到眩晕瘫坐,仿佛看到了原子弹爆炸。带上底座是台带独显的高性能笔电,拆下是个可以书写的平板,当时还在小学的我坚信着这便是电脑的终极形态。然而,1w起步的价格实在是令人望而却步,我也只能看着网上的评测视频,幻想自己能拥有一台顶配Surface Book

    ——终于,这个梦想在十年后得到了实现

  • 博客已迁移至VitePress

    忙活了两周,总算迁移过来了!

  • 修复《小丑牌》爆机后出牌闪退的问题

    最近玩小丑牌有点上头,想打个无尽39底注爆机玩玩。结果在二十多底注左右的时候不小心打爆了一次,后面一旦出牌就直接闪退,感觉丢掉玩了这么久的存档也不太好,遂尝试修复

  • 在 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中的StyledPropertyDirectProperty

  • 用代码写代码:使用Roslyn API构建语法树并应用于源生成器

    在上文构建源生成器的过程中,我们使用字符串直接插入代码。这样做固然方便快捷,但字符串需要手动格式化,且无法检测拼写错误,这对需要生成复杂结构的源生成器项目很不友好。

    本文将介绍生成代码的另一种方式:使用Roslyn API构建语法树。

  • C# 源生成器(Source Generator)入门

    C#9 引入了一个强大的机制:源生成器(Source Generator)。通过创建源生成器,我们可以简化大量重复编写的代码,或是减少反射来获得更强的性能以及AOT支持

    本文将介绍如何从零开始创建一个最简单的源生成器

  • 【2025年1月】浙江首考信息技术T12:滑动窗口求和

    作为参加本次首考的考牲,个人感觉信息技术部分难度较24年1月/24年6月更大

  • C# 13前瞻:Extensions

    此文章已过时

    在 C# 14 中,本文章所介绍的 Roles&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

  • 【教程】将你的Windows Phone升级到16212

    众所周知,2017年6月1日,微软推送了Windows 10 Mobile 16212。然而,此版本却是微软未经测试的内部版本,升级之后手机就会变砖。不久,微软就撤回了这次版本更新,w10m也永远停在了1709(实质上仍是1703)

    本篇教程将介绍给Windows Phone推送16212.1000并正常启动的方法。

  • Lumia Honjo/650XL:微软移动在中低端的最后失败

    2016年,微软发布Lumia650。1+16的骁龙212,纯纯的清库存机。但这还是点燃了一些人的希望:WP还没死透。

    Win10 Mobile坚定不移,不会被放弃

    ——微软高管 Terry Myerson

    B站可能会倒闭,但永远不会变质

    ——陈睿

    然而仅仅一年后,微软就停了w10m的功能更新,这说法也成了个笑话。(当然,微软也弄过仙女座之类的补救工作,这就不在本帖讨论范围内了)

    但这次的主角不是Lumia 650,而是它被砍掉的升级版:Lumia 650XL。

  • WP最后的绝唱——Lumia 950 XL+Windows 10 on ARM评测

    本人去年年底斥资七百大洋从闲鱼购入一台二手国行双卡版Lumia 950XL,现来做一个简单评测