Files
AtomUI/docs/Desktop.Controls/SplitView/SplitViewAPI.md
T

4.5 KiB
Raw Blame History

SplitView API 参考

命名空间

namespace AtomUI.Desktop.Controls;

AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")


枚举类型

SplitViewDisplayMode(来自 Avalonia.Controls)

显示模式枚举,控制面板与主内容的空间关系。

值 说明
Overlay 面板覆盖在主内容之上,收起时完全隐藏
Inline 面板与主内容并排,展开时压缩主内容
CompactInline 收起时保留紧凑条,展开时压缩主内容
CompactOverlay 收起时保留紧凑条,展开时覆盖主内容

SplitViewPanePlacement(来自 Avalonia.Controls)

面板放置位置枚举。

值 说明
Left 面板在左侧(默认)
Right 面板在右侧
Top 面板在顶部
Bottom 面板在底部

AtomUI 扩展的公共属性(StyledProperty)

以下属性由 AtomUI.Desktop.Controls.SplitView 新增,不存在于 Avalonia 原生 SplitView 中。

属性名 类型 默认值 说明
PaneMotionEasing Easing? 由 Token 控制(cubic-bezier(0.1, 0.9, 0.2, 1.0)) 面板展开/收起的缓动曲线
PaneOpenMotionDuration TimeSpan 由 Token 控制(200ms) 面板展开动画时长
PaneCloseMotionDuration TimeSpan 由 Token 控制(100ms) 面板收起动画时长
IsMotionEnabled bool 跟随全局 Token 是否启用过渡动画(共享属性,通过 AddOwner 从 MotionAwareControlProperty 注册)

继承自 Avalonia.Controls.SplitView 的常用属性

属性名 类型 默认值 说明
Content object? null 主内容区域,可以是任意控件
ContentTemplate IDataTemplate? null 主内容数据模板
Pane object? null 侧边栏面板内容
PaneTemplate IDataTemplate? null 面板内容数据模板
IsPaneOpen bool false 面板是否展开
DisplayMode SplitViewDisplayMode Overlay 显示模式
PanePlacement SplitViewPanePlacement Left 面板放置位置
OpenPaneLength double 由 Token 控制(320) 面板完全展开时的宽度/高度
CompactPaneLength double 由 Token 控制(48) 紧凑模式下面板的宽度/高度
PaneBackground IBrush? 由 Token 控制(ColorBgContainer) 面板背景画刷
UseLightDismissOverlayMode bool false 是否在 Overlay 模式下启用点击遮罩关闭面板
Background IBrush? null 整体背景色
IsEnabled bool true 是否启用

内部属性(Internal)

以下属性仅供控件内部和主题系统使用,不对外公开。

属性名 类型 说明
PaneOpenTransitions Transitions? 面板展开时的过渡动画集合,由 ConfigureTransitions 自动管理
PaneCloseTransitions Transitions? 面板收起时的过渡动画集合,由 ConfigureTransitions 自动管理

事件

事件名 类型 说明
PaneClosing EventHandler<CancelRoutedEventArgs> 面板即将关闭时触发,可通过 Cancel = true 取消关闭(继承自 Avalonia.Controls.SplitView)
PaneClosed EventHandler<RoutedEventArgs> 面板关闭完成后触发(继承自 Avalonia.Controls.SplitView)

伪类(Pseudo-Classes)

SplitView 支持以下伪类,可在样式选择器中使用。所有伪类均继承自 Avalonia 原生 SplitView。

面板状态伪类

伪类 触发条件
:open IsPaneOpen == true
:closed IsPaneOpen == false

面板位置伪类

伪类 触发条件
:left PanePlacement == Left
:right PanePlacement == Right
:top PanePlacement == Top
:bottom PanePlacement == Bottom

显示模式伪类

伪类 触发条件
:overlay DisplayMode == Overlay
:inline DisplayMode == Inline
:compactinline DisplayMode == CompactInline
:compactoverlay DisplayMode == CompactOverlay

其他伪类

伪类 触发条件
:lightDismiss UseLightDismissOverlayMode == true
:disabled IsEnabled == false

实现的接口

IMotionAwareControl

public bool IsMotionEnabled { get; set; }

控制面板展开/收起时是否使用过渡动画。设为 false 时面板将瞬间切换尺寸,不产生动画效果。