登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
安全
›
Avalonia系列文章之样式与主题2
Avalonia系列文章之样式与主题2
[ 复制链接 ]
阎逼
2025-6-1 21:49:49
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
在前一篇文章中,简述了Avalonia UI中样式和主题的简单用法,今天继续深入讲解样式的选择器语法以及内置主题等相关内容,仅供学习分享使用,如有不足之处,还请指正。
样式选择器语法
样式选择器定义样式将作用于哪些控件。选择器使用多种格式,接下来将分别介绍。
按控件类型选择
Avalonia UI中的样式可以按照控件类进行定义,在选择器中输入控件类型即可,示例如下所示:
[/code]在上述代码中,定义的样式将应用于所有的Button,如果在选择器中需要加入命名空间,则将类型和命名空间以[b]竖线[/b]隔开即可,如下所示:
[code]<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
其中 命名空间必须先以xmlns:xx="clr-namespace:命名控件;assembly=程序集"的方式声明,才能在选择器进行引用,而不能直接引用。选择器不会匹配派送类型,若要匹配派送类型,需要使用:is选择器。
对象的类型,是通过查看器StyleKey属性来来确定的,通常它返回当前实例的类型,所以,如果希望Button的派生类也被视为Button样式,则需要重写StyleKeyOverride属性以返回typeof(Button)。关于StyleKeyOverride说明如下所示:
此方法为virtual修饰的虚,重写示例如下所示:
namespace FirstAvalonia.OkControls
{
public class OkButton:Button
{
<SimpleTheme />
</Application.Styles>
</Application>protected override Type StyleKeyOverride => base.StyleKeyOverride;
}
}
复制代码
按名称选择
如果定义的样式只需要应用于特定的控件,则可以按名称进行定义选择器。在定义选择器时,以Selector="类型#控件名称"的格式进行定义,如下所示:
[/code]在上述示例中,样式将应用于x:Name="btnOk"的按钮。如下所示:
[code]
复制代码
注意,按名称选择中,必须在#前加上控件类型前缀才可以,否则无法识别要应用的控件类型。
按样式类选择
样式类是按照在选择器中定义类别,并在控件中通过Classes属性进行引用。样式类以“控件类型.样式类名1.样式类名2”的形式进行命名,格式如下所示:
<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
在上述示例中,定义了h1,blue两个样式类,分别定义控件字体大小,和背景色。通过Classes="h1 blue"的方式进行引用,多个样式类用空格隔开。且选择器可以定义多个样式类,多个类用点号分隔(如:Selector="Button.large.red"),如果选择器中指定了多个类,则控件必须同时拥有所有请求的类定义才能匹配。
按伪类选择
使用当前伪类选择控件进行匹配样式,伪类在选择器中以英文冒号为标识符,且选择器中只能定义一个伪类,与其他样式类一起使用时,伪类必须在选择器定义的最后一个。伪类定义格式为“控件类型:伪类名称”或“控件类型.样式类:伪类名称”示例为:
<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
在上述示例中,Selector="Button:pointerover"表示当鼠标放在按钮上时应用样式。
常用的伪类主要有以下几种:
:disabled 禁用控件。
:pointerover 鼠标放置在控件之上。
:focus 控件聚焦。
:focus-within 控件处于获取焦点状态,或者其子控件中存在处于获取焦点状态的控件。
:focus-visible 该控件已获得焦点,应当显示一个视觉指示器。
子操作符
如果想让样式应用于某些控件内的子控件,则可以使用子操作符。子选择符使用大于号(>)来表示。如Selector="StackPanel > Button" 表示StackPanel直接包含的Button才会匹配样式。子操作符定义的选择器仅匹配逻辑控件树的中的直接子项。
<StackPanel>
<Button>Save</Button>
<DockPanel Width="300" Height="300">
<Button DockPanel.Dock="Top">Top</Button>
<TextBlock>Some text</TextBlock>
</DockPanel>
</StackPanel>
复制代码
该选择器将匹配第一个按钮,但不会匹配第二个按钮。这是因为第二个按钮不是堆栈面板的直接子项(它在停靠面板中)。
任意后代操作符
子操作符仅匹配逻辑树中的直接子项,而如果想匹配逻辑树中的所有子项,则可以使用任意后代操作符。任意后代操作符为空格,当两个选择器由空格分隔时,选择器将匹配逻辑树中的任意后代,父级在左边,后代在右边。示例如下所示:
<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
上述示例中,StackPanel下的Button都将匹配样式,具备“2像素的黄色边框”。
按属性匹配
在Avalonia UI中,可以根据控件包含某些属性来应用样式,这就可以细化选择器,在选择器中包含属性的值,格式为“控件类型[属性=值]”,这将匹配具有指定属性设置为指定值的控件。如下所示:
<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
在上面的XAML中,第一个按钮将被选择,但第二个按钮不会被选择,因为第二个按钮没有设置IsDefault="True"属性。
注意,如果要将附加属性用作属性匹配,则属性名必须用括号括起来。如:Selector="TextBlock[(Grid.Row)=0]"。
Not函数
如果选择器中想要不包含某些条件来定义,则可以使用Not函数,即否定选择器。示例代码如下所示:
<UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
在上述示例中,h1的样式将匹配第一个TextBlock,不包含h1样式的TextBlock将匹配第二个样式。
以上只是列举了一些常用的样式,关于更多内容,请参考官网:
https://docs.avaloniaui.net/zh-Hans/docs/reference/styles/style-selector-syntax
主题
在Avalonia UI中,官方提供了两个内置主题:
Fluent主题,Fluent主题是受Microsoft的Fluent Design System启发的现代主题。
Simple主题,是一个简约且轻量的主题,具有有限的内置样式。
Fluent主题
Fluent主题受到微软的Fluent Design System启发,该系统是一组用于创建视觉吸引力和交互式用户界面的设计指南和组件。Fluent Design System强调现代,清晰的美学,平滑的动画和直观的交互。它在不同平台上提供了一致而精致的外观和感觉,同时为开发人员提供了样式系统的灵活性。
默认创建的Avalonia项目,已经通过Nuget包管理器安装了Fluent组件库,当前版本号为11.2.4,如下图所示:
且默认情况下,已经在App.xaml中包含了Fluent主题,如下所示:
<SimpleTheme />
</Application.Styles>
</Application>
<SimpleTheme />
</Application.Styles>
</Application><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl><UserControl xmlns="https://github.com/avaloniaui"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<SimpleTheme />
</Application.Styles>
</Application> xmlns:vm="clr-namespace:FirstAvalonia.ViewModels"
<SimpleTheme />
</Application.Styles>
</Application> mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
<SimpleTheme />
</Application.Styles>
</Application> x:
<SimpleTheme />
</Application.Styles>
</Application> xmlns:xx="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls"
<SimpleTheme />
</Application.Styles>
</Application> x:DataType="vm:MainViewModel">
<UserControl.Styles>
</UserControl.Styles>
</UserControl>
复制代码
虽然 FluentTheme 有内置的暗色和浅色变体资源,但仍然可以重写这些变体的基础调色板。 这在开发人员想要使用相同的基本主题但具有不同颜色时非常有用。
<FluentTheme>
<FluentTheme.Palettes>
<SimpleTheme />
</Application.Styles>
</Application>
<SimpleTheme />
</Application.Styles>
</Application><ColorPaletteResources x:Key="Light" Accent="Green" RegionColor="White" ErrorText="Red" />
<SimpleTheme />
</Application.Styles>
</Application>
<SimpleTheme />
</Application.Styles>
</Application><ColorPaletteResources x:Key="Dark" Accent="DarkGreen" RegionColor="Black" ErrorText="Yellow" />
</FluentTheme.Palettes>
</FluentTheme>
</Application.Styles>
</Application>
复制代码
Simple主题
Avalonia Simple 主题专门设计为简约且轻量,具有有限的内置样式。它为构建自定义样式提供了简单干净的基础。低视觉和结构复杂性使其成为在嵌入式设备上运行的应用程序的理想选择。
若要使用Simple主题,首先需要安装 Avalonia.Themes.Simple NuGet 包。如下图所示:
然后在App.xaml中包含主题,如下所示:
<SimpleTheme />
</Application.Styles>
</Application>
复制代码
关于主题的更多内容,请参考官网:
https://docs.avaloniaui.net/zh-Hans/docs/basics/user-interface/styling/themes/
以上就是《Avalonia系列文章之样式与主题2》的全部内容,旨在抛砖引玉,一起学习,共同进步。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Avalonia
系列
文章
样式
主题
相关帖子
灵感启发:日产文章 100 篇,打造“实时热点洞察”引擎
OpenCode系列---【OpenCode接入白山智算模板】
OpenCode系列---【OpenCode接入白山智算模板】
OpenCode系列---【OpenCode接入白山智算模板】
vxe-table 给单元格加样式的方式详解,支持 style 和 className 的方式给单元格加样式
解锁小米8EG5系列机型的注意事项
Avalonia UI 12.0.0-RC1正式发布
【原创】ERTEC 系列 PROFINET 芯片级硬件过滤器分析
HTML5单元素样式修改+CSS颜色链接技巧
密码学系列之C/Python编程实现AES算法
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
灵感启发:日产文章 100 篇,打造“实时热点洞察”引擎
0
572
梁丘艷蕙
2026-03-11
业界
OpenCode系列---【OpenCode接入白山智算模板】
1
1013
夔新梅
2026-03-11
业界
OpenCode系列---【OpenCode接入白山智算模板】
0
753
屋稷删
2026-03-11
业界
OpenCode系列---【OpenCode接入白山智算模板】
0
64
齐娅晶
2026-03-11
代码
vxe-table 给单元格加样式的方式详解,支持 style 和 className 的方式给单元格加样式
2
48
役魅肋
2026-03-13
业界
解锁小米8EG5系列机型的注意事项
3
526
染悄
2026-03-17
业界
Avalonia UI 12.0.0-RC1正式发布
2
851
柏雅云
2026-03-22
业界
【原创】ERTEC 系列 PROFINET 芯片级硬件过滤器分析
1
366
撵延兵
2026-03-25
安全
HTML5单元素样式修改+CSS颜色链接技巧
0
314
堠秉
2026-03-31
业界
密码学系列之C/Python编程实现AES算法
0
872
娥搽裙
2026-04-05
回复
(30)
祝娜娜
2025-10-18 00:43:36
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
杆树
2025-11-11 04:44:02
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
痨砖
2025-12-7 00:26:24
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
驳嗦
2025-12-12 03:18:24
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
过来提前占个楼
匣卒
2025-12-15 11:41:48
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
忌才砟
2025-12-22 05:30:59
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
昝琳怡
2025-12-26 15:30:45
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,下载保存了,貌似很强大
泡市
2026-1-14 20:00:22
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
育局糊
2026-1-15 01:42:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
判涔
2026-1-16 23:36:44
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
晌集涟
2026-1-18 08:19:16
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
卓卞恻
2026-1-18 20:39:54
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
簑威龙
2026-1-20 18:29:34
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
喜欢鼓捣这些软件,现在用得少,谢谢分享!
庾芷秋
2026-1-24 02:37:14
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
姬宜欣
2026-1-24 12:27:01
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
狙兕
2026-1-26 14:48:42
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
釉她
2026-1-26 20:57:14
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
捐催制
2026-1-27 04:55:03
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
热心回复!
辉伫
2026-1-27 17:27:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
阎逼
2026-1-27 17:27:18
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991126
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9516
6
韶又彤
9910
7
荪俗
8994
8
宋子
9875
9
蓬森莉
9869
10
俞瑛瑶
10000
查看更多
今日好文热榜
75
Microsoft Agent Framework + Kimi API 实
1
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
350
【节点】[Posterize节点]原理解析与实际应
1
【小记】解决校园网中单播互通的不同子网间
2
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
1
【小记】解决校园网中单播互通的不同子网间
757
GitHub 热门项目 Top 10 | 2026 年 04 月 0
193
Spring Cloud Gateway实战:微服务API网关
786
罗兰艺境GEO内容工程实战复盘:CSDN 92分技
524
MacBook Air 本地运行大语言模型(LLM)
49
【渗透测试】玄机&Maze 全过程wp
794
AI元人文:大儒家观之功夫论——痕迹生生、
275
"Meta-Harness: End-to-End Optimization o
398
UI 自动化测试产品深度对比分析报告
237
指派问题WebApp实验室:从建模到智能分配的