自定义资源
在 Semi Avalonia 中,绝大多数影响控件样式的笔刷、尺寸等要素都以动态资源的方式引用,如果Semi Avalonia内置的配色及尺寸不满足您的要求,需要进行微调,可以采用覆写动态资源的方式为其重新赋值。
如何覆写动态资源
这里通过一个简单的示例来解释如何通过覆写动态资源来基于 Semi Avalonia 的样式进行微调
比如 当前版本 Semi Avalonia 的 Button 圆角为 3px。这可能并不满足您的项目需求,希望项目中所有的 Button 的圆角都变为 6。
通过 Semi Avalonia 的源代码 /src/Semi.Avalonia/Controls/Button.axaml
我们可以看到,Button 的 CornerRadius 通过如下方式赋值:
<ControlTheme x:Key="{x:Type Button}" TargetType="Button">
<!--省略无关代码-->
<Setter Property="CornerRadius" Value="{DynamicResource ButtonCornerRadius}" />
<!--省略无关代码-->
</ControlTheme>
通过源代码 /src/Semi.Avalonia/Themes/Shared/Button.axaml
我们可以看到 ButtonCornerRadius
的定义:
<CornerRadius x:Key="ButtonCornerRadius">3</CornerRadius>
因此我们可以在App.axaml中重新为这个资源赋值
<Application
x:Class="Semi.Avalonia.Demo.App"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:semi="https://irihi.tech/semi"
RequestedThemeVariant="Light"
>
<Application.Styles>
<semi:SemiTheme Locale="zh-CN"/>
</Application.Styles>
<Application.Resources>
<CornerRadius x:Key="ButtonCornerRadius">6</CornerRadius>
</Application.Resources>
</Application>
如此,应用中的所有按钮圆角就都以及变成了 6px。
覆写动态资源的进阶用法
自定义资源还有更多进阶的用法,详见 自定义资源 - 进阶