打开网易新闻 查看精彩图片

.NET 11 预览版 2 给 MAUI 带来了几针"局部麻醉"——不动筋骨,但疼的地方确实不疼了。这次更新集中在地图控件、数据绑定性能和 API 一致性上,属于那种发布会不会吹、但写代码的人会偷偷点赞的改进。

微软近来的策略很明显:把现有的 API 打磨顺滑,而不是继续堆新接口。早期版本里,开发者写地图相关的 XAML 像在做填空题——代码冗余、绑定慢、API 形态还前后不一。预览版 2 对这些地方做了可量化的修补。

最直观的改动在地图控件。LocationMapSpan现在支持TypeConverter,坐标可以直接写在 XAML 里,不用套一层x:Arguments。新增的Map.Region可绑定属性则让地图的初始可视区域能用声明式语法搞定。这两件事加起来,XAML 的行数肉眼可见地变少。

地图元素的操控也更精细了。PolygonPolylineCircle这些图形现在都有IsVisibleZIndex属性,想隐藏或调整层级不用移除重绘。更实用的是,点击事件在 Android、iOS 和 Mac Catalyst 上统一开放,写交互式覆盖层终于不用写三遍平台代码。

绑定性能的优化有具体数字背书。TypedBinding的执行时间从 47.47 纳秒压到 32.90 纳秒,内存分配从 128 字节砍到 64 字节;源码生成绑定速度提升约 25%,内存同样减半。对数据密集型应用来说,这相当于给频繁跳动的界面打了一剂稳定剂。

不可变性保证是另一处"看不见的优化"。Color被标记为ImmutableObject(true)Font改成只读结构体,XAML 源码生成器可以安心缓存实例,生成更高效的代码——应用层不用改一行,运行时默默变快。

API 对齐方面,VisualStateManager.GetVisualStateGroups现在返回VisualStateGroupList而非IList,和SetVisualStateGroups终于对上了。这是破坏性变更,依赖旧返回类型的代码需要手动调整。

还有一个修复值得单独提:Entry 的Text绑定到可空值类型(如int?)时,清空输入会正确把属性设为 null,而不是像从前那样 stubborn 地保留旧值。双向绑定可选数值输入的场景,准确性因此提升。

总体来看,这次更新像是一次精准的"代码体检"——问题不大,但查出来的都治了。微软在 GitHub 的发布说明里列出了完整变更,预览版运行时和工具包也已开放下载。

有开发者在评论里吐槽:"终于不用为了藏个地图元素写一堆平台判断了。"这大概是对此类渐进式改进最朴实的认可。