3

我基本上正在开发一个绘图编辑器,它允许您根据现有几何图形的关键点定义几何图形。然后,用户可以添加一些关于他们刚刚添加的东西的信息,例如名称、预期大小等。我用来完成它的 API 是很棒的Reversible API,尽管我希望这个问题超出了 API 的范围我在用。

基本上有几个问题我想澄清一下:

1)如果您使用支持主/详细方式选择的应用程序支持撤消/重做,是否更改绘图对象的状态也会导致它被选中?示例是撤消操作更改了元素的名称,除非选择了该元素,否则该更改不会很明显。是否考虑过这样的标准行为?

2) 在处理某些类型的增量更改(拖动框,或使用数字微调器)时,将一组更改分组为单个用户交互(鼠标滑动或释放spinner button),但是在处理 MVVM 时,我目前只知道属性发生了变化,而不是变化的来源。这些类型的交互是否有一种标准方法可以在不完全分解模式的情况下传播到视图模型?

4

1 回答 1

0

如有疑问,最好的方法是查看操作系统控件和平台上其他应用程序的典型行为,以便与用户熟悉的内容保持一致。特别是与最常用的应用程序的一致性。如果您检查其他应用程序如何处理 UI 问题,您通常可以学到很多东西,尤其是关于您在自己的设计中可能没有考虑到的微妙情况。

1) 通常,撤消倾向于选择已更改的项目,既可以突出显示更改的内容,也可以将用户的输入焦点移回上次编辑,以便他们可以继续。这对于文本等内容特别有效,因为如果您撤消/重做您键入的内容,您可能希望在刚刚撤消/重做的文本区域继续编辑。您对主/细节进行的主要选择是是仅选择主对象,还是选择更改的精确细节。

2)您的撤消管理器可以使用一些智能将类似的操作合并到一个撤消步骤中。例如,如果用户连续键入多个字符,它可能会注意到这些操作都是相似的,并将它们连接到单个撤消步骤中。只是如何做到这一点取决于您如何存储和处理撤消,但是对于体面的面向对象设计,这应该是一个容易添加的选项(即询问撤消记录本身是否可以合并,以便您可以轻松添加新类型的将来撤消记录)。请注意,在一个步骤中累积太多更改可能会非常烦人,因此您可能会发现一个动作 = 1 步骤的延迟实现实际上比试图过于聪明获得了更好的用户体验。我'

于 2013-03-14T21:35:16.633 回答