Ursa.Avalonia icon indicating copy to clipboard operation
Ursa.Avalonia copied to clipboard

重塑NumericUpDownLib

Open heartacker opened this issue 10 months ago • 0 comments

重塑NumericUpDownLib

  • [ ] 支持基本样式
    • [ ] 支持设置背景颜色BackGround
      • [ ] 理论上,所有控件背景都应该一直,如透明,如很多时候要以用户背景图片为背景, 只把Text区域设置为透明,会显得很突兀
    • [x] forceground
      • [ ] Text 前景颜色和按钮等是否一直还是可以分开设置?
    • [x] align and content align
    • [x] 前导/后缀内容设置
  • [ ] 支持配置显示字符长度,就是 输入框长度以字符个数计算
  • [ ] 默认使用等宽字体
    • [ ] 不然在调节的时候,自动宽度下,会出现宽度抖动,比如 01 ,在很多界面字体下宽度不一样。就会再调节过程中,一直再晃动
  • [x] 支持自定义格式显示和解析
    1. [x] normal
    2. [x] hex #175
    3. [x] bin #175
  • [ ] 支持命令绑定 和事件
    • [x] Command,代表触发Value #186
    • [ ] ReadCommand 代表回读 #185
  • [ ] 支持点击鼠标
    1. [x] 鼠标点击 改变上下
    2. [x] 支持 显示上下调节按钮
    3. [ ] 禁用鼠标点击
    4. [x] 支持显示读写按钮
    5. [ ] 支持鼠标点击读取 #185
      1. [ ] 编辑状态时,不允许点击读取和快捷键读取
    6. [ ] 支持鼠标点击写入 #185
      1. [ ] 当用户编辑的ing,点击写入 ValueChanged 改动
      2. [ ] 当无编辑状态,强制触发 ValueChanged 事件,
  • [x] 支持鼠标拖拽
    • [x] 支持禁用
  • [x] 支持用户滚轮
    1. [ ] 支持禁用用户滚轮
  • [x] 支持用户输入
    1. [ ] 正在编辑的解析的更新临时值,支持只读绑定,方便用户获取,正在编辑的数据
    2. [x] 如果用户输入但是值不变不触发任何更改
    3. [x] 支持显式触发更新, Enter
    4. [x] 支持失去焦点触发,
      1. [ ] 并且可以配置 #199
  • [ ] 如果用户正在编辑,但是后台恰好增在更新,如何处理
    1. [ ] 直接更新为内存的值?
    2. [ ] 保持编辑的状态,但是告诉用户后台已经更新?
  • [ ] 支持显示编辑状态
    1. [ ] 如果用户输入有效,原本值0,输入0xa,且不大于Max。不小于Min 表示ok
    2. [ ] 输入的,超过最大和最小,显示 无效
    3. [ ] 如果输入格式不对,如输入0xw,解析错误,显示无效
  • [ ] 编辑状态, Esc 快捷键应该推出编辑,并将显示的值恢复为原来的值
  • [ ] 用户编辑状态,不支持鼠标点击读写,回读
    1. [ ] 但是仅支持点击写入
    2. 这样可以修复。当用户删除所有text,点击出现报错问题
  • [ ] 支持快捷键
    1. [x] Enter ,编辑状态下,触发更改
    2. [x] 上下 表示为加减
    3. [ ] alt+ 上下表示加速加减
    4. [ ] ale+左,表示回读
      1. 类似点击读取按钮
    5. [ ] alt+右,表示写入
      1. 类似点击写入按钮
    6. [ ] Alt+Enter/Alt+>
      1. [ ] 编辑状态,相当于Enter, 仅仅触发更改
      2. [ ] 值不变,不处于编辑状态,强制执行写动作
  • [ ] 支持用户指定推荐 items, 方便指定预设,如 用户可以绑定 [ 1,2,4,8],推荐用户输入 这几个项目
    1. [ ] AutoCompleteBox
    2. [ ] 支持是否仅仅输入预设
  • [ ] 支持 mask
    • [ ] 读取Mask, 如 回读为 0x11, 而我的 ReadMask 为 0x3, 那么将Value 设置为 0x11&0x3 =0x1
    • [ ] 写入 mask,如我的WriteMask 为 0xFF, 如果写入值为 0x10FF, 那么将写入值,写入 0x10ff&0xff=0xff
  • [ ] 支持简单的数学计算
    1. [ ] +、-、*、/、%
    2. [ ] &、|、^、~
    3. [ ] <<、>>
    4. [ ] ()括号优先级

heartacker avatar Mar 31 '24 14:03 heartacker