3

我正在考虑在我的一个应用程序中实现功能区 GUI,当然希望遵守 MS 指南,所以它感觉就像一个普通的功能区等。但我试图弄清楚如何解决动态变化中的特定问题丝带。

我正在创建一个概念游戏编辑器,请不要怀疑为什么要使用功能区,因为这纯粹是一个概念想法,但是应用程序将有许多编辑器(2D、3D、代码等),并且 GUI 应该适应并显示每个编辑器相关控件,即在 2D 编辑器中可能是画笔,在 3D 上可能有许多平移和旋转工具。

鉴于功能区指南,主页菜单包含最常用的工具是有意义的,但仅适用于正在编辑的对象类型(旋转对 2D 或代码没有意义!)。

我最初认为每个编辑器可以有一个窗口,但这会造成一团糟,我宁愿有很多选项卡式编辑器,这样你就可以像在 Eclipse 等中一样快速浏览它们。而且所有编辑器都保存回一个文件,所以这很有意义拥有一个应用程序窗口来为用户保留这个隐喻。

我在想我可以根据用户打开的编辑器类型动态更改功能区选项卡(选项卡可能会出现/消失,主页选项卡上的内容等会发生变化),但这违反了以下 MS 指南:

“组中显示的控件不得因选择而更改。如果控件未处于活动状态,则该控件必须变灰,而不是从组中删除”

“功能区上选择的选项卡不得因用户在 177 文档中进行的选择而自动切换(除非在上下文选项卡部分中注明)。”

我了解指南背后的原因,但我不确定如何让功能区在这种情况下感觉正确:

  • 根据编辑器类型更改选项卡的内容(违反指南)
  • 每个编辑器类型都有一个标签(但是如果我最终有 15 种编辑器类型怎么办!)
  • 有一个非常通用的功能区并将特定的编辑器操作移动到侧边栏或其他东西(不是最好的 GUI 设计)
  • 为每种类型的编辑器使用上下文选项卡(更好的​​解决方案,但意味着您始终打开一个上下文选项卡!)

任何其他想法/解决方案将不胜感激,因为我必须使用功能区并且必须将其用于此类应用程序!

4

2 回答 2

1

如果您提供的是特定于编辑器的选项卡,我想您可以以最适合该特定编辑器的方式对其进行布局。这意味着如果您对其他编辑器使用相同的选项卡,控件会偶尔移动。将不适用于任何特定编辑器的控件灰显似乎是不切实际的,如果它会导致很多混乱。

另一方面,灰显控件确实具有将每个控件保持在选项卡上完全相同的物理位置的好处。不要低估它的力量。没有什么比期望控制一个地方,然后突然移动到另一个地方(或完全消失)更令人恼火的了。变灰清楚地表明变灰控件不适用于此上下文。

因此,根据每个编辑器的控件差异程度,您必须决定哪种方法破坏性较小:将不需要的控件变灰,或为每个编辑器提供新的布局。

为每个打开的编辑器打开一个选项卡似乎并不可行,因为当用户在特定编辑器中时会有许多无用的选项卡。

如果可能的话,争取一些志愿者或 Beta 测试人员的帮助,并与他们一起做一些纸质原型,看看哪种方法更能引起他们的共鸣。

于 2009-12-08T16:21:01.703 回答
1

我面临同样的设计问题。一个想法是为每个编辑器使用不同的框架,并在其中使用不同的专用功能区。因为在一个带有 10 个选项卡的大功能区中没有什么意义,这些选项卡中充满了禁用的命令。

PS我正在研究另一个想法 - 使用某些选项卡点击来触发不同的编辑器模式。(我正在设计一个房屋起草程序。)例如:

  1. 单击“主页”选项卡切换到计划编辑器以从“顶部”视图编辑房屋;
  2. 单击“墙”选项卡会切换到墙编辑器,您可以在其中编辑墙的形状和特征。
  3. 单击其他选项卡可能不会更改当前编辑器。它们可以显示与整个文档(或其他)相关的其他非模态命令,而不是与当前编辑器模式本身有关。
于 2010-11-06T10:36:38.453 回答