在 ASP.NET 2.0 应用程序中,我希望允许用户选择 MenuItem,即使用户没有单击 MenuItem 的实际文本,而只是单击 ASP.NET 在当前选定的 MenuItem 周围放置的突出显示区域(由 DynamicHoverStyle.BackColor 属性表示)。由于子菜单中每个 MenuItem 的 BackColor 显示相同的宽度,基于具有最长文本的 MenuItem,我想让每个子菜单项的点击区域(可点击区域)具有相同的宽度(在 BackColor 区域相同),无论在每个单独的子菜单项中显示多少文本。
这是设置。我正在使用 MasterPage 上的菜单在我的每个页面上显示类似的菜单。一些页面抑制了这个菜单,其中一些页面添加了额外的菜单项,有时添加到顶层,有时添加子菜单项到现有的顶层菜单项,有时两者都(添加一个菜单项到顶层,然后添加额外的菜单项作为新添加的顶层的子菜单。
此菜单具有水平方向,并且是动态的,因为最初仅显示顶层,并且在选择时显示子菜单。
在可用性测试中,我们注意到用户会选择一个顶级菜单项来暴露子菜单,然后选择一个子菜单项,但不一定要点击子菜单项文本,而是点击子菜单项的背景颜色区域. 由于某些 MenuItem 的文本比其他的长,因此具有短 Text 的 MenuItem 具有相当大的 BackColor 区域。当用户单击 BackColor 区域而不是直接单击 MenuItem 文本时,什么也不会发生,因为用户实际上并没有单击子菜单项命中区域。
虽然对于所显示的 MenuItem 的哪些部分是可点击的有视觉提示(当鼠标定位在 MenuItem 文本上时,鼠标指针变为链接光标,但当它仅悬停在 BackColor 上时不会),这种行为混淆了用户。他们突出显示了一个 MenuItem,然后单击它,但什么也没发生。
我想让一个 MenuItem 成功单击,即使用户没有单击 MenuItem 的实际文本,而只是单击 BackColor 区域。
似乎应该有一个属性来控制显示的 MenuItems 的活动区域的宽度,但我没有看到它。鉴于我在运行时创建了其中一些菜单项,有什么建议吗?