github编辑

关于 Acss

Acss

Avalonia Css 不遵循 CSS(Cascading Style Sheets)标准。它是用来分离 Avalonia UI 的结构和样式的。因为概念和语法上和 CSS 类似,因此我们仍然借用这个名字,将其命名为 Avalonia Css,或者 Acss。

Acss 的优势

我们通过 Acss 将 Avalonia 的 axaml 拆分为结构和样式。结构定义 UI 的骨骼,类似于 Html 的角色。样式定义 UI 的样貌,类似于 CSS 的角色。这样做有以下好处:

1. 结构分离

开发人员编写页面逻辑和页面功能时,不需要考虑 UI 的样式,专注于功能;而在修改样式时也可以独立而连续地专注于主题样式。

circle-check

2. 结构重用

UI 的结构可以重用,针对不同主题,不需要重新编写结构的代码,高效且安全。

circle-info

高可重用的结构,请参考 如何定义良好的控件模板

3. 动态加载

Acss 支持代码源的热更新(热重载),更新后即时生效。

4. 过滤控制。(开发中...)

对于样式可以做更复杂的控制功能,包括属性控制、样式控制、资源控制、动画控制、主题控制等。例如,我们可以根据指定条件控制是否显示动画、Transitions,控制生效的样式、资源分组等。

5. 行为扩展

我们对 Acss 内置了一些通用行为。例如“Esc 键关闭窗口”等。你也可以扩展自己的 Acss 行为。

circle-info

我们并没有使用 Avalonia.Xaml.Interactivity 这个组件。你仍然可以独立的使用 Acss 行为和 Avalonia 行为库,而不用担心他们之间的冲突。

6. 语法扩展

基于 Acss 我们可以扩展一些 axaml 不支持的语法,例如样式多继承和跨类型重用。

circle-check

7. 样式调试。(计划中...)

我们计划提供样式调试工具,方便开发期间浏览一切和 Acss 样式、资源等有关的信息。

8. 自定义绘制。(计划中...)

我们计划让 Acss 支持在任意控件上进行自定义的绘制操作。

最后更新于