我正在考虑在我的一个应用程序中实现功能区 GUI,当然希望遵守 MS 指南,因此感觉就像一个普通的功能区,等等。但我正在尝试找出解决特定问题的方法动态改变功能区。
我正在创建一个概念游戏编辑器,请不要问为什么要使用丝带,因为这纯粹是一个概念想法,但该应用程序将有许多编辑器(2D、3D、代码等),对于每个编辑器,GUI 都应该调整和显示相关控件,即在 2D 编辑器中可能是画笔,在 3D 中有许多平移和旋转工具。
鉴于功能区指南,主菜单包含最常用的工具是有意义的,但仅适用于正在编辑的对象类型(旋转对 2D 或代码没有意义!)。
我最初认为每个编辑器可以有一个窗口,但这真的很乱,我宁愿有很多选项卡式编辑器,这样你就可以像在 eclipse 等中一样快速浏览它们。而且所有的编辑器都保存回一个文件中,所以有一个应用程序窗口来为用户保留这个隐喻是有意义的。
我在想我可以根据用户打开的编辑器类型动态更改功能区选项卡(选项卡可能会出现/消失,主页选项卡上的内容等会发生变化)但这违反了 MS 指南:
“组中显示的控件不得因选择而改变。如果控件未激活,则该控件必须变灰,而不是从组中删除”
“功能区上选择的选项卡不得因用户在 177 文档中所做的选择而自动切换(上下文选项卡部分中注明的除外)。”
我理解指南背后的原因,但我不确定如何让丝带在这种情况下感觉正确:
- 更改选项卡的内容 取决于编辑器类型(去 违反准则)
- 有一个标签 每个编辑器类型(但如果我最终 有 15 种编辑器类型!)
- 有一个非常 通用功能区和特定移动 编辑操作到侧边栏或 一些东西(不是最好的 GUI 设计)
- 为每种类型使用上下文标签 编辑器(更好的解决方案,但意味着你 始终打开一个上下文选项卡!)
任何其他想法/解决方案将不胜感激,因为我必须使用色带并且必须将它用于此类应用程序!
最佳答案
如果您要提供特定于编辑器的选项卡,我想您可以按照最适合该特定编辑器的方式对其进行布局。这意味着如果您对其他编辑器使用相同的选项卡,控件将偶尔移动。将不适用于任何特定编辑器的控件灰显似乎不切实际,如果它会造成很多困惑的话。
另一方面,使控件变灰确实具有将每个控件保持在选项卡上完全相同的物理位置的好处。不要低估它的力量。没有什么比期待一个地方的控制,并让它突然移动到其他地方(或完全消失)更令人恼火的了。变灰清楚地表明变灰控件不适用于此上下文。
因此,根据每个编辑器控件的不同程度,您必须决定哪种方法的破坏性较小:将不需要的控件灰显,或者为每个编辑器提供全新布局。
为每个打开的编辑器打开一个选项卡似乎不可行,因为当用户在特定编辑器中时,会有很多选项卡无用。
如果可能,争取一些志愿者或 Beta 测试人员的帮助,并与他们一起制作一些纸上原型(prototype),看看哪种方法更能引起他们的共鸣。
关于user-interface - 功能区 GUI 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867982/