跳到正文
浏览文档

安装

添加 AvaloniaUIKit 包,并在 App.axaml 中启用 UIKitTheme。

安装包

dotnet add package AvaloniaUIKit

面向 Avalonia 可选包以及第三方库 Dock.Avalonia 的主题是独立的,因此不使用它们的应用不会引入额外依赖:

dotnet add package AvaloniaUIKit.ColorPicker
dotnet add package AvaloniaUIKit.DataGrid
dotnet add package AvaloniaUIKit.Dock

Dock.Avalonia 的主题针对该库的一个特定版本(12.1.0.6),其包精确依赖该版本。它会替换该库自带的主题:不要再额外添加那些主题。

本库面向当前的 Avalonia 12 版本与最新的 .NET SDK。

启用主题

把 UIKitTheme 加入应用的样式。它与 FluentTheme 一样是 Styles 主题,可以独立工作:它还会为窗口、弹出层、装饰层和焦点环提供主题。它跟随应用的主题变体:Default Light、Default Dark,或某一套同捆配色主题(见主题设置)。

App.axaml
<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:uikit="clr-namespace:AvaloniaUIKit;assembly=AvaloniaUIKit"
             x:Class="MyApp.App">
  <Application.Styles>
    <uikit:UIKitTheme />
  </Application.Styles>
</Application>

可选包各提供一个主题,放在 UIKitTheme 之后:

App.axaml
<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:uikit="clr-namespace:AvaloniaUIKit;assembly=AvaloniaUIKit"
             xmlns:uikitcolor="clr-namespace:AvaloniaUIKit;assembly=AvaloniaUIKit.ColorPicker"
             xmlns:uikitgrid="clr-namespace:AvaloniaUIKit;assembly=AvaloniaUIKit.DataGrid"
             xmlns:uikitdock="clr-namespace:AvaloniaUIKit;assembly=AvaloniaUIKit.Dock"
             x:Class="MyApp.App">
  <Application.Styles>
    <uikit:UIKitTheme />
    <uikitcolor:UIKitColorPickerTheme />
    <uikitgrid:UIKitDataGridTheme />
    <uikitdock:UIKitDockTheme />
  </Application.Styles>
</Application>

在使用新控件的 XAML 中,用 using: 映射命名空间:

xmlns:uikit="using:AvaloniaUIKit"

叠加在 FluentTheme 之上

UIKitTheme 只为 组件 中列出的控件提供主题。若要让其他控件保留原有外观,请先添加 FluentTheme;后添加的主题优先,而受主题管理的控件无论下方是否有 Fluent,外观都相同。

App.axaml
<Application.Styles>
  <FluentTheme />
  <uikit:UIKitTheme />
</Application.Styles>

NativeAOT

AvaloniaUIKit 与 AvaloniaUIKit.ColorPicker 可裁剪,并兼容 AOT:默认使用编译绑定,分析器会禁止反射。Avalonia 的 DataGrid 本身不可裁剪,因此 AvaloniaUIKit.DataGrid 不提供 NativeAOT 保证;基础表格请使用主包中的 TableView。Dock.Avalonia 也没有声明自身可裁剪:AvaloniaUIKit.Dock 自身没有裁剪警告,但不为 Dock 提供 NativeAOT 保证(见 Dock)。