YStudio Y++

窗口 XML 参考

Y++ / YStudio 开发文档 · 一点滴

Y++ 窗体布局保存在 XML 中。写针对具体控件的 YSS 前,请先读取对应 XML(或整理出控件名称与 typeId 清单)。

文件位置

路径 说明
窗口/{窗体名}/{窗体名}.xml 主文件;设计器保存的布局
窗口/主窗口/主窗口.xml 新建工程时的默认窗体

窗体名与根元素属性 名称 一致,也与默认加载的 {窗体名}.yss 文件名一致。

文档结构

<?xml version="1.0" standalone="no"?>
<窗口 名称="主窗口" 宽度="1128" 高度="602" ...>
  <标题>窗口标题栏文字</标题>
  <控件>
    <按钮 名称="按钮1" typeId="button" 左边="16" 顶边="96" 宽度="120" 高度="32" 标题="确定" .../>
    <复选框 名称="复选框1" typeId="checkbox" .../>
    ...
  </控件>
</窗口>

根元素 <窗口>

常用属性(写 YSS 时一般只需 名称):

属性 含义
名称 窗体名,对应 YSS 文件名 {名称}.yss
宽度 / 高度 客户区尺寸
背景色 窗体背景(非 YSS,XML 属性)
圆角 窗外框圆角半径(DIP);运行时会裁剪窗口外形
标题栏按钮样式 windows(右侧线框)或 macos(左侧交通灯)
背景材质 none / acrylic(亚克力毛玻璃)/ mica(云母)/ tabbed
标题栏高度 自绘标题栏高度(DIP)

控件元素

<控件> 下每个自闭合子元素为一个控件。标签名为中文类型名,同时带 typeId 英文标识。

写 YSS 时必取字段:

XML 字段 用途
名称 YSS 按名选择:button#按钮1#按钮1
typeId YSS 类型选择器:buttoncheckbox
标题 显示文字(按钮/标签等);不是 YSS 选择器
元素标签名 中文类型,与 typeId 交叉验证

不要标题 当作 YSS 的 #名称;名称始终是 名称 属性。

元素名 ↔ typeId ↔ YSS 选择器

XML 元素标签 typeId YSS 选择器 说明
按钮 button button
标签 label label
文本框 textbox textbox 含单行
文本框 multilinetextbox textbox 多行;YSS 仍用 textbox
图片框 picturebox picturebox
分组框 groupbox groupbox
下拉框 combobox combobox 元素名是「下拉框」
单选框 radiobutton radiobutton
复选框 checkbox checkbox
开关 switch switch
进度条 progressbar progressbar
滑块 slider slider
列表框 listbox listbox
选项卡 tabwidget tabwidget
树形视图 treeview treeview
菜单栏 menubar menubar

typeId 以 XML 为准;若与元素标签不一致,以 typeId 映射 YSS

从 XML 生成 YSS 选择器

规则:

{typeId}#{名称}     → 精确到单个控件,例如 checkbox#复选框1
{typeId}            → 该类型全部控件,例如 button
#{名称}             → 任意类型,按名称匹配,例如 #按钮1
{typeId}:{伪状态}   → 例如 checkbox:checked、button:hover

示例:XML 片段

<复选框 名称="复选框1" typeId="checkbox" 标题="同意协议" .../>
<按钮 名称="按钮_确认" typeId="button" 标题="确定" 默认按钮="真" .../>

对应 YSS:

checkbox#复选框1 {
    indicator-size: 18;
}

checkbox#复选框1:checked {
    checkmark-color: #00CC66;
}

button#按钮_确认 {
    border-radius: 6;
}

button:default {
    font-bold: true;
}

XML 中的样式 vs YSS

同一控件 XML 内已有大量视觉属性(背景色边框颜色悬停背景色 等)。YSS 会覆盖或补充这些属性,且更适合主题化、伪状态、子控件。

建议分工:

任务 优先改
全窗体主题、换肤、伪状态 .yss 文件
单个控件设计器微调 XML 属性(或 YSS 按名覆盖)
批量同类控件 YSS 类型选择器 {typeId} { ... }

与 YSS 文档的配合

  1. 读本文件 → 得到 名称 + typeId
  2. YSS.md → 语法与通用属性
  3. yss/{typeId}.md → 该组件可用属性(multiline 读 textbox.md

限制与注意

  • XML 不包含运行时动态创建的控件;仅设计器布局。
  • 菜单项、列表项、树节点等内容在 XML 属性(如 菜单项列表节点列表)中,不是独立 YSS 选择器;项级样式用组件文档中的 :item 等规则。
  • 修改 XML 后需保存;修改 资源/{窗体名}.yss 后 F5 运行才会部署到 exe 旁。

完整片段示例

树视图等复杂控件的属性组合,可对照本仓库控件文档与设计器属性面板;XML 字段名以设计器写出为准。

该文件中可看到:按钮1树形视图1多行文本框1(typeId=textbox)、菜单栏1 等,可直接用于练习从 XML 生成 YSS 选择器。