2026-06-17-M4-UI改造子计划.md 26 KB

M4 · UI 改造子计划(自适应竖屏 + 触控优先 + 圆形造型 + 内置键盘 + 主页零滚动)

编制日期:2026-06-17 · 里程碑:M4 · 对应需求 4/5/6/6.1/11(兼顾 12)· 决策 D6 · 风险 R6 父需求:../00-需求总览.md §3(需求 4/5/6/11)、§5(🔶D6)、§6(R6) · 方案权威:../需求文档/07-UI改造方案.md 改造对象工程:ivf_tl_operate_2.0/ivf_tl_Operate/(前台 UI,合并后主进程)


Goal

把 operate 端从「写死 1824×2736 竖屏 + Release 无缩放 + 原生 TextBox 唤起系统软键盘」改造为:

  1. 分辨率无关的自适应竖屏(去写死像素,Viewbox 等比 + 弹性容器);
  2. 触控优先、兼容鼠标(热区 ≥48px、间距合理、点击/滚动双通道);
  3. 主页保持圆形培养皿 + 16well + 圆心舱号,缓冲瓶(11号)单独呈现(沿用现状顶部状态条);
  4. 内置数字/密码键盘取代 osk.exe,并屏蔽系统软键盘(TabTip/osk);
  5. 主页零滚动:所有功能分区一屏内排布、无滚动条。

只改布局/呈现/输入层,不改业务逻辑与数据绑定。 所有 ViewModel、ExHouse*/ExDish* 绑定、ClickHouseEvent、菜单 Click 事件、密码校验语义(MiMa())保持不变。


Architecture(现状核对结论,已用 codegraph/Read 核对存在)

关注点 现状(核对到的精确位置) M4 处理
主窗口 MainWindow.xaml:1-16Height="2736" Width="1824"WindowState=MaximizedMainWindow.xaml.cs:32-41#if DEBUG 包 Viewbox,Release 无缩放 M4-01:Release 也包 Viewbox(分辨率无关)
主页根 MainPageView.xaml:10 Height="2736" Width="1824":11-17 四行 250/250/*/324 写死像素 M4-01:去写死宽高 + 行高改星号比例
舱室控件 CustomHouseInfo.xaml.cs:17(class,5 处引用);.xaml:10 Canvas Height="955" Width="360";圆几何在 .cs:24-34(16等分/半径115/小圆21/偏移90°) M4-03:保留圆形几何,外壳改自适应;缓冲瓶不走此控件
10 舱布局 MainPageView.xaml:95-150 Grid 13 列(4 舱列星号 + 分隔线 1px),5行×2列;缓冲瓶(11号)走 ExHouse11 顶部状态条(:34-40) M4-05:弹性填满零滚动;缓冲瓶维持顶部呈现
底部导航 MainPageView.xaml:153-170ButtonTopImage 写死 Height="324" Width="456" M4-01/02:去写死、热区达标
密码输入 SettingPageView.xaml.cs:106-110 MiMa(PasswordBox) 校验 tl13579;7 处入口(:167/190/213/237/256/291/323) M4-04:绑内置密码键盘,校验语义不动
软键盘 LoginWindow.xaml.cs:30,116-133TouchUpProcess.Start("osk.exe")LoginWindow.xaml 4 个 TextBox/1 个 PasswordBox M4-04:替换为内置键盘 + 屏蔽 osk/TabTip
全局资源 App.xaml:8-587ResourceDictionary + 合并 WpfControlLibrary 多个字典;含 ScrollBar/ComboBox 样式 M4-02/04:新增触控样式、键盘资源挂这里

现状布局方式 = 写死像素 + 绝对定位(MainWindow/各 UserControl 固定 1824×2736,Canvas 绝对坐标,字号/行高大量绝对值),Release 无任何缩放——换分辨率必然错位。这是 R6 工作量的根源。


Tech Stack

  • C# / WPF / .NET 6(ivf_tl_Operate)· MVVM(ViewModel 不动)
  • 布局:Viewbox(等比) + Grid(星号/比例) + 弹性容器;去 Canvas 绝对坐标 / 去写死 Width/Height
  • 内置键盘:WPF 自绘 UserControl(数字键盘 + 全键盘/密码键盘)+ Popup 弹出 + 附加属性绑定;不引第三方
  • 触控:MinWidth/MinHeight ≥48pxStylus.IsFlicksEnabledScrollViewer.PanningMode

范围与约束(必读)

  1. 本地不可构建/运行:本机 dotnet6、项目实为 net6,且 M1 合并代码尚未整体编译。本计划任何任务都不含"构建/运行/UI 截图验证"步骤;每步完成后只做「代码完成 → 登记待验证项」,运行级验证统一后置到 M7(需运行/真机/Surface)。计划内不出现假装能跑的命令。
  2. D6 依赖未决:自适应基准(目标分辨率几种、Viewbox 等比 vs 真弹性布局)依赖 Surface 实际分辨率(真机/用户提供)。为不阻塞 M4,本计划一律做"分辨率无关":优先 Viewbox 等比缩放 + 弹性容器,绝不写死像素。最终基准校准(按真机分辨率定 Viewbox 设计基准、是否切真弹性布局)登记为待验证项,关联 D6,留到 M7。
  3. 只改布局/呈现/输入:不动业务逻辑、不动数据绑定路径、不动密码校验语义、不动 ClickHouseEvent/菜单 Click 事件签名。圆形培养皿+16well+圆心舱号为强约束(需求 6.1),几何与语义不可改。
  4. 子页(设置/图表/调试/对焦/配置/监控/记录/详情)的自适应+触控同样纳入,但 M4 先落「框架 + 主页 + 键盘」,子页按 M4-01 框架逐页套用(详见各任务);既有业务功能不丢(需求 12 回归在 M6)。
  5. 多语言资源(Chinese.xaml/English.xamlApp.xaml:27-28)不在 M4 改,仅保证布局改造后 DynamicResource 文案绑定不破。

待验证清单约定

每步产出登记到统一清单(建议沿用 M1/M3 的 V-xxx 编号,本计划用 V-M4-xx)。所有需运行/真机/Surface 的项标注 [M7],自适应基准相关项标注 [D6]


子任务总览

任务 主题 需求 步骤数
M4-01 自适应竖屏框架(去写死像素 + Viewbox + 弹性容器) 4 5
M4-02 触控优先兼容鼠标(热区/手势/输入友好) 5/6 4
M4-03 主页圆形造型(培养皿+16well+圆心舱号 / 缓冲瓶单列) 6.1 4
M4-04 内置数字/密码键盘 + 屏蔽系统软键盘 11 5
M4-05 主页零滚动(一屏排布、无滚动条) 6 3

共 5 子任务 / 21 步骤。建议执行序:M4-01 → M4-05 → M4-03 → M4-02 → M4-04(先立框架与主页骨架,再做圆形与触控细化,最后做键盘)。各步彼此低耦合,可分人并行 M4-04 与 M4-02/03。


M4-01 · 自适应竖屏框架(需求 4,🔶D6)

目标:根布局改为分辨率无关;去写死像素;窗口/主页根容器自适应竖屏。不写死任何像素基准,最终分辨率基准登记 [D6][M7]。

M4-01-1 主窗口去固定尺寸 + Release 启用 Viewbox

  • 文件:ivf_tl_operate_2.0/ivf_tl_Operate/MainWindow.xaml:11MainWindow.xaml.cs:32-42
  • 改什么:
    • .xaml:11 删除 Height="2736" Width="1824"(保留 WindowState="Maximized" WindowStyle="None",让窗口随屏幕铺满)。
    • .xaml.cs:32-41#if DEBUG / #endif 去掉,使 Viewbox 缩放在 Release 也生效MainGridViewbox{Stretch=Uniform}Content。保留 Stretch=Uniform(等比,竖屏不变形)。
  • 为何:现状 Release 无缩放,换分辨率错位(07 §1)。Uniform 等比是 D6 未决下最稳的"分辨率无关"兜底。
  • 自适应原则:Viewbox 等比,不写死像素;窗口尺寸由 Maximized 决定,不再硬编码。
  • 触控原则:—(本步不涉输入)。
  • 待验证:V-M4-01 [D6][M7] 真机 Surface 各分辨率下主窗口等比铺满、无黑边/变形;确认是否需 Stretch=Fill 或切真弹性(关联 D6)。

M4-01-2 主页根容器去写死宽高 + 行高改比例

  • 文件:ivf_tl_operate_2.0/ivf_tl_Operate/View/MainPageView.xaml:10-17
  • 改什么:
    • :10 删除 Height="2736" Width="1824",改由父级 Viewbox/容器拉伸;保留 d:DesignHeight/d:DesignWidth(设计期预览用,加 mc:Ignorable)即可。
    • :11-17 四行 250/250/*/324 → 星号比例(如 Auto(顶栏按内容) / Auto(运行时间条) / *(舱区占满) / Auto(底部导航)),固定区用 Auto+内部 MinHeight,舱区用 * 吃掉剩余 → 零滚动地基。
  • 为何:三段式骨架(固定顶栏 + 主内容 flex + 固定底部导航,07 §3),舱区 * 自动填满是主页零滚动的结构前提。
  • 自适应原则:行高比例化,不写死像素;固定栏用 Auto+MinHeight 而非绝对高。
  • 触控原则:底部导航高度交 M4-02 设 MinHeight≥触控基准。
  • 待验证:V-M4-02 [D6][M7] 真机下顶栏/运行条/底部导航在各分辨率比例合理、舱区占满。

M4-01-3 顶部信息栏 / 运行时间栏去绝对宽

  • 文件:MainPageView.xaml:20-92
  • 改什么:顶栏 ColumnDefinition Width="350" 等绝对列宽改为 Auto/* 组合;图标 Width/Height="39"、字号 FontSize="36/42" 等绝对值保留数值但置于 Viewbox 等比缩放下(D6 未定前不逐字号改相对单位,避免过度返工);运行时间栏(:66-92)三等分 * 已是弹性,保留。
  • 为何:列宽绝对会在窄分辨率挤压;Auto/* 让左侧缓冲瓶状态块按内容、右侧报警块靠右。
  • 自适应原则:列宽弹性化;字号暂随 Viewbox 等比(基准定后再评估相对字号,[D6])。
  • 触控原则:右侧 StatusControl(:62) 点击区在 M4-02 确认热区。
  • 待验证:V-M4-03 [D6][M7] 顶栏在最窄目标分辨率不挤压、文案不截断。

M4-01-4 建立自适应改造规约(供子页复用)

  • 文件:新增 ivf_tl_operate_2.0/ivf_tl_Operate/Resources/AdaptiveStyles.xaml(资源字典),在 App.xaml:8-29 MergedDictionaries 末尾追加一条引用。
  • 改什么:沉淀通用规约资源——三段式根模板约定、*/Auto 用法注释、触控基准尺寸 Double 资源(如 TouchMinSize=48,供 M4-02 引用)、Viewbox 包裹约定。不含业务样式
  • 为何:子页(设置/图表/调试等 13 个 View)逐页套用同一套自适应规约,避免各页各写;集中一处便于 D6 基准定后统一调。
  • 自适应原则:规约本身分辨率无关。
  • 触控原则:触控基准尺寸资源在此定义、M4-02 全局引用。
  • 待验证:V-M4-04 [M7] 资源字典被正确合并、子页引用无 StaticResource 缺失(编译期,M7 跑通时确认)。

M4-01-5 子页自适应套用清单(登记,不逐页实现)

  • 文件:登记项,涉及 View/ 下 13 个 xaml(AboutView/AddDishWindowView/AlarmPageView/AutoFocusSettingView/BufferDebugView/CCDSettingView/ChartPageView/DetailPageView/DishRecordView/HouseSettingPageView/PhotoPageView/SettingPageView/HouseDebugPageView)。
  • 改什么:本步只产出套用清单:每页根容器去写死宽高、改 Viewbox/弹性、能一屏则零滚动、装不下则整页主内容区整体滚动(非区域内嵌、非悬浮,07 §3)。实际逐页改造按清单分批进行(可拆为 M4-01 后续子步或并入 M6 回归前)。
  • 为何:13 页全量改造工作量大(R6),先列清单可控推进,避免一次性铺摊子。
  • 自适应原则:同 M4-01 规约。
  • 触控原则:子页输入框统一接 M4-04 内置键盘。
  • 待验证:V-M4-05 [D6][M7] 每页在目标分辨率布局合理;装不下时整页滚动而非局部嵌套滚动。

M4-02 · 触控优先兼容鼠标(需求 5/6)

目标:热区/组件 ≥48px、间距合理;触控点击/滚动顺畅且不破坏鼠标(远程/触屏故障兜底)。

M4-02-1 全局触控基准与按钮触控样式

  • 文件:Resources/AdaptiveStyles.xaml(M4-01-4 新建);引用方 MainPageView.xaml:160-169(底部 ButtonTopImage)。
  • 改什么:定义触控基准 MinWidth/MinHeight(引用 TouchMinSize,建议 ≥48 设计单位,经 Viewbox 等比后实际更大);底部导航 ButtonTopImage 的写死 Height="324" Width="456" 改为 MinHeight/弹性宽(4 列 * 已等分,去固定宽即可)。
  • 为何:07 §3「热区/组件放大 ≥48px」;底部导航是最高频触控区。
  • 自适应原则:去写死宽高,宽随列 *、高随 MinHeight
  • 触控原则:热区达标的核心步骤。
  • 待验证:V-M4-06 [M7] 真机底部导航/主按钮可稳定点中、不误触。

M4-02-2 点击/滚动双通道兼容(触控 + 鼠标)

  • 文件:MainWindow.xaml.cs:156-175DisableWPFTabletSupport 现被注释,:30 调用注释);App.xaml 全局 ScrollViewer 样式(:240-270)。
  • 改什么:保持 DisableWPFTabletSupport 处于不启用(启用会吞触控/手写,与触控优先冲突);舱室与列表区设 ScrollViewer.PanningMode="VerticalFirst"Stylus.IsFlicksEnabled="False"(已在 ComboBoxStyle1:550 用过该模式,沿用);保证现有 MouseDown/Click(如 CustomHouseInfo.Canvas_MouseDown_canvas_MouseUp)与 TouchUp 并存——WPF 默认触控会 promote 成 Mouse 事件,无需双写,仅确认未调用会禁用 promotion 的 API。
  • 为何:需求 5「兼容鼠标」;触控优先但远程/触屏坏时鼠标须可用。
  • 自适应原则:—。
  • 触控原则:触控手势(平移滚动) + 点击 promotion;不禁用 Tablet 支持。
  • 待验证:V-M4-07 [M7] 真机触控滑动顺畅 + 远程鼠标点击/滚动均可用。

M4-02-3 输入控件触控放大(非键盘部分)

  • 文件:涉及子页输入框/下拉的样式(App.xaml ComboBox 样式 :539-583 已有触控 item 高 66);登记为规约项。
  • 改什么:ComboBoxItem 高(:566 Height="66")维持触控友好;新增/复用输入框 MinHeight 触控基准;「能选则选」原则下的点选组件(受精类型/语言/是否等,需求 11)改造登记,实际替换在 M4-04 之后逐项。
  • 为何:07 §5「能选则选 + 按键 ≥48px」。
  • 自适应原则:尺寸随 Viewbox。
  • 触控原则:下拉项/输入框热区达标。
  • 待验证:V-M4-08 [M7] 下拉/选择类组件触控可用、项可点中。

M4-02-4 触控热区走查清单(登记)

  • 文件:登记项,覆盖主页 + 13 子页所有可交互元素。
  • 改什么:产出热区走查清单(每个 Button/ButtonTopImage/ComboBox/可点 Canvas/图标按钮列出当前尺寸与是否达标),M7 真机逐项核。
  • 为何:触控达标是验收项(07 §7.2),需可追溯清单。
  • 待验证:V-M4-09 [M7] 全可交互元素热区达标走查通过。

M4-03 · 主页圆形造型(需求 6.1,强约束)

目标:每个培养舱保持「大圆=培养皿 / 圆周 16 小圆=well / 圆心=舱号」;缓冲瓶(11号)单独呈现。几何与业务语义不可改

M4-03-1 保留圆形几何、外壳改自适应

  • 文件:ivf_tl_operate_2.0/ivf_tl_Operate/CustomUserControls/CustomHouseInfo.xaml:10.xaml.cs:24-43
  • 改什么:
    • 几何代码不动.cs:24-34ellipseCount=16/samllRadius=21/bigRadius=115/angleOffset=90/angle=360/16)与 InitUserControl(:63-91) 的极坐标摆放保持原样——这是需求 6.1 强约束的圆形+16well 实现。
    • .xaml:10 Canvas Height="955" Width="360" 维持(控件内部用固定画布坐标系,整体由父 Viewbox 等比缩放即自适应;不在控件内拆绝对坐标,避免破坏圆几何)。
  • 为何:圆形/16well/圆心舱号是业务语义强约束,最稳做法是"内部固定画布 + 外部等比缩放"。
  • 自适应原则:控件作为一个等比单元随 Viewbox 缩放;不逐元素改相对单位(保几何正确性优先)。
  • 触控原则:Canvas_MouseDown/_canvas_MouseUp(.cs:114-118,223-226) 点击进详情保持;整圆即热区,天然达标。
  • 待验证:V-M4-10 [D6][M7] 各分辨率下圆形不变形、16well 不错位、圆心舱号居中。

M4-03-2 圆心舱号 + 关舱/开舱态呈现核对

  • 文件:CustomHouseInfo.xaml:27-41
  • 改什么:核对两套 Canvas(_canvasOpen 开舱态 :27-34 显舱号、_canvas 关舱态 :36-41 显大舱号+外环 _ellis)随等比缩放后舱号仍居中;舱号字号 FontSize="80"(:38) 保留(随 Viewbox)。不改 HouseDoorStateConvert 绑定逻辑。
  • 为何:圆心舱号(需求 6.1)在两种舱门态下都要正确。
  • 自适应原则:随 Viewbox 等比。
  • 触控原则:—。
  • 待验证:V-M4-11 [M7] 开/关舱两态圆心舱号均居中正确。

M4-03-3 well 状态色彩语义核对(蓝/浅蓝/白)

  • 文件:CustomHouseInfo.xaml.cs:148-221SetDish/SetEmbryoState)、InitUserControl:87-89(空 well 白底)。
  • 改什么:逻辑不动,仅核对:空 well = 白底(:89 Colors.White);07 §4 要求「蓝=当前 well / 浅蓝=已放胚胎 / 白=空」。现状用图片(yuan.png/yz.png 等)表达胚胎态。色彩语义是否需补"当前 well 蓝/已放浅蓝"两态登记待确认(可能属业务呈现增强,超出"只改布局"边界)。
  • 为何:避免误改业务语义;色彩三态若与现状图片态不一致,需求确认归属。
  • 自适应原则:—。
  • 触控原则:—。
  • 待验证:V-M4-12 [M7] well 三态色彩语义与需求 6.1 一致(含是否需新增"当前 well"高亮,待确认)。

M4-03-4 缓冲瓶(11号)单独呈现核对

  • 文件:MainPageView.xaml:20-41(顶栏左侧 ExHouse11 压力块)。
  • 改什么:核对缓冲瓶不走 CustomHouseInfo(无相机/不对焦/无 16well,07 §4),现状已在顶栏用 ExHouse11.PressureString/pressureDesc 单独显示——沿用此呈现,仅随 M4-01-3 顶栏弹性化;按 07 §3「缓冲瓶并入顶部状态条」补齐温度/补气显示(如缺)登记。
  • 为何:缓冲瓶非培养舱,必须单独呈现(需求 6.1);现状已分离,避免误并入 10 舱网格。
  • 自适应原则:随顶栏弹性。
  • 触控原则:—(状态展示为主)。
  • 待验证:V-M4-13 [M7] 缓冲瓶压力/温度/补气在顶部状态条正确显示、不占用 10 舱圆形区。

M4-04 · 内置数字/密码键盘 + 屏蔽系统软键盘(需求 11)

目标:自绘内置数字键盘 + 密码键盘,点输入框弹出;屏蔽 osk/TabTip;绑定到调试页密码、参数数字输入框。校验语义不改。

M4-04-1 自绘内置键盘控件

  • 文件:新增 ivf_tl_operate_2.0/ivf_tl_Operate/CustomUserControls/SoftKeyboard.xaml(.cs)(与现有 CustomHouseInfo 同目录,沿用 CustomUserControls 命名空间)。
  • 改什么:实现 WPF UserControl:数字键盘(0-9/退格/清除/确定,按键 MinHeight/MinWidth≥触控基准)+ 全键盘/密码键盘(字母+数字,供登录账号/密码)。键入通过事件/回调写回目标输入框(不直接依赖具体页面)。
  • 为何:需求 11「内置数字小键盘/密码键盘」;自绘可控、不依赖系统键盘。
  • 自适应原则:键盘本身用 Grid 星号布局,随 Viewbox 等比;按键不写死像素。
  • 触控原则:按键 ≥48px(引用 M4-01-4 TouchMinSize)。
  • 待验证:V-M4-14 [M7] 键盘可点、按键热区达标、数字/字母输入正确。

M4-04-2 键盘弹出宿主(Popup/遮罩)

  • 文件:SoftKeyboard 配套;可在 MainWindow.xaml:12-15MainGrid 已有 _mask 遮罩 :14)复用遮罩层承载键盘 Popup
  • 改什么:提供"绑定到输入框 → 获焦/点击弹出键盘 → 失焦/确定收起"的宿主机制(Popup 或顶层覆盖层),复用现有 _maskMainWindow.xaml.cs:141-153 Mark())做背景压暗。
  • 为何:键盘需在任意页输入框上方稳定弹出。
  • 自适应原则:弹出层定位相对屏幕/输入框,不写死坐标。
  • 触控原则:弹出后不遮挡当前输入框。
  • 待验证:V-M4-15 [M7] 任意页点输入框稳定弹/收键盘、不挡输入框。

M4-04-3 屏蔽系统软键盘(osk/TabTip)

  • 文件:ivf_tl_operate_2.0/ivf_tl_Operate/Windows/LoginWindow.xaml.cs:30,116-133(现 Process.Start("osk.exe"))。
  • 改什么:删除/停用 TextBox_TouchUp/PasswordBox_TouchUp 里启动 osk.exe 的逻辑(:121-123,131-133)与 KeyProcess 字段(:30),改为弹 M4-04-1 内置键盘;并在程序层禁用 TabTip(需求 11「禁 TabTip」——具体禁用方式注册表/服务/InputPane 抑制属真机环境项,登记 [M7])。
  • 为何:需求 11「屏蔽系统软键盘」;现状恰恰是主动拉起 osk,必须改掉。
  • 自适应原则:—。
  • 触控原则:触控点输入框 → 内置键盘(不再系统键盘)。
  • 待验证:V-M4-16 [M7] 真机触控任意输入框不弹 osk/TabTip、只弹内置键盘。

M4-04-4 绑定调试页密码框

  • 文件:SettingPageView.xaml(7 个 *_PasswordBox)+ SettingPageView.xaml.cs:106-110,167-323MiMa() 及 7 处校验入口);登录 LoginWindow.xaml:64-73PasswordBox)。
  • 改什么:把这些 PasswordBox 接到内置密码键盘(点击弹出、键入写回 PasswordBox.Password);MiMa() 校验逻辑与 tl13579 比对完全不动,仅改输入来源。
  • 为何:需求 11「工程师调试页密码」走内置键盘;调试入口(HEPA/保养/舱设置/对焦设置/舱调试/缓冲瓶调试/退出)密码框是主要场景。
  • 自适应原则:—。
  • 触控原则:密码框 ≥触控基准、键盘按键达标。
  • 待验证:V-M4-17 [M7] 7 处调试密码 + 登录密码均走内置密码键盘、校验语义不变。

M4-04-5 绑定参数数字输入框 + 输入即校验

  • 文件:参数输入页(CCDSettingView/AutoFocusSettingView/HouseSettingPageView/HouseDebugPageView/BufferDebugView 等含数字 TextBox 的页);登记逐页清单。
  • 改什么:数字输入框接内置数字键盘;接入"输入即校验"钩子(如脉冲 ≤ZMax 125000,07 §5)——校验阈值/规则属业务,沿用现有校验或登记需补,键盘只负责数字录入。
  • 为何:需求 11「参数输入 + 输入即校验」。
  • 自适应原则:—。
  • 触控原则:数字键盘按键 ≥48px。
  • 待验证:V-M4-18 [M7] 参数数字框走内置数字键盘;越界(如 >125000)即时拦截(校验规则确认后)。

M4-05 · 主页零滚动(需求 6)

目标:主页所有功能分区一屏内排布、无滚动条;沿用现有功能分区与业务绑定,桌面竖屏排版。

M4-05-1 三段式骨架去除溢出

  • 文件:MainPageView.xaml:11-17(根 Grid,承接 M4-01-2)。
  • 改什么:确认根 Grid = 固定顶栏(Auto) + 运行时间条(Auto) + 舱区(*) + 底部导航(Auto),舱区 * 吃掉全部剩余高度,使整页恰好一屏、无垂直溢出;主页根不挂任何 ScrollViewer
  • 为何:07 §3「主页零滚动 / 去掉网格 overflow」。
  • 自适应原则:舱区 * 自适应剩余空间。
  • 触控原则:—。
  • 待验证:V-M4-19 [D6][M7] 主页在目标分辨率无滚动条、无内容被裁。

M4-05-2 10 舱网格弹性填满

  • 文件:MainPageView.xaml:95-150(10 舱 Grid,13 列 / 4 行)。
  • 改什么:4 个舱列 * + 分隔线 1px 维持;行 */1px 维持;确认 5行×2列(实为 2 内容行+分隔)的 CustomHouseInfo 随列宽/行高 * 弹性缩放(控件本身 M4-03 已等比);去除可能导致 overflow 的固定尺寸。
  • 为何:07 §3「10 舱 5行×2列弹性填满」。
  • 自适应原则:舱列/行全 *,舱控件等比。
  • 触控原则:每舱整圆为热区(M4-03)。
  • 待验证:V-M4-20 [D6][M7] 10 舱在舱区内弹性填满、不溢出、圆形不变形。

M4-05-3 主页零滚动走查 + 其他页滚动策略登记

  • 文件:登记项(主页 + 其他页)。
  • 改什么:登记验收口径——主页必须零滚动;其他页能一屏则零滚动,装不下则整页主内容区整体滚动(非区域内嵌、非操作区悬浮,07 §3)。各页归类登记,M7 逐页核。
  • 为何:07 §7.1 验收「任意目标分辨率下主页零滚动、其他页布局合理」。
  • 自适应原则:—。
  • 触控原则:整页滚动用触控平移(M4-02-2 PanningMode)。
  • 待验证:V-M4-21 [D6][M7] 主页零滚动;其他页按"整页滚动 vs 零滚动"策略归类核对通过。

待验证清单汇总(统一移交 M7)

编号 关联任务 标签 验证内容
V-M4-01 M4-01-1 [D6][M7] 主窗口各分辨率等比铺满、无变形
V-M4-02 M4-01-2 [D6][M7] 三段式比例合理、舱区占满
V-M4-03 M4-01-3 [D6][M7] 顶栏最窄分辨率不挤压/不截断
V-M4-04 M4-01-4 [M7] 自适应资源字典合并、无缺失引用
V-M4-05 M4-01-5 [D6][M7] 13 子页布局合理 + 整页滚动策略
V-M4-06 M4-02-1 [M7] 底部导航/主按钮热区达标
V-M4-07 M4-02-2 [M7] 触控滑动 + 鼠标点击/滚动并存
V-M4-08 M4-02-3 [M7] 下拉/选择组件触控可用
V-M4-09 M4-02-4 [M7] 全可交互元素热区走查
V-M4-10 M4-03-1 [D6][M7] 圆形不变形、16well 不错位
V-M4-11 M4-03-2 [M7] 开/关舱两态圆心舱号居中
V-M4-12 M4-03-3 [M7] well 三态色彩语义(含"当前 well"待确认)
V-M4-13 M4-03-4 [M7] 缓冲瓶顶部单独呈现、不占圆形区
V-M4-14 M4-04-1 [M7] 内置键盘可点、热区达标
V-M4-15 M4-04-2 [M7] 键盘稳定弹/收、不挡输入框
V-M4-16 M4-04-3 [M7] 屏蔽 osk/TabTip、只弹内置键盘
V-M4-17 M4-04-4 [M7] 调试/登录密码走内置密码键盘、校验不变
V-M4-18 M4-04-5 [M7] 参数数字框走数字键盘 + 越界拦截
V-M4-19 M4-05-1 [D6][M7] 主页无滚动条、无裁切
V-M4-20 M4-05-2 [D6][M7] 10 舱弹性填满、不溢出
V-M4-21 M4-05-3 [D6][M7] 主页零滚动 + 其他页滚动策略

[D6] 项总说明:所有 [D6] 项的最终判定(Viewbox 等比是否足够、是否需切真弹性布局、设计基准分辨率取值)依赖 Surface 真机分辨率。M4 阶段交付"分辨率无关"实现即视为完成,[D6] 校准随 M7 真机一并定。