RibbonApplicationMenuItem默认情况下未选择SubMenu的第一个项目

时间:2012-06-20 10:57:12

标签: wpf wpf-controls menuitem ribbon-control

我在我的应用程序中使用Microsoft的Ribbon控件。

我有一个带有相同类型SubItems的RibbonApplicationMenuItem。功能区菜单的默认行为是,每当使用键盘打开子菜单时,默认情况下会选择(并突出显示)第一个项目。

我有两个带子项的菜单项,如下面的代码所示。第一个菜单正确打开,突出显示第一个项目。但第二个菜单在打开时不会突出显示第一个项目。唯一的区别是在第二个菜单中,我的第一个项目被禁用(IsEnabled = false)。所以我希望下一个项目(第二项)应该突出显示。但是不是:(。任何人都知道如何解决这个问题?

此外最糟糕的是,我无法使用向上/向下箭头键导航第二个菜单的子菜单,就像我可以使用第一个菜单一样。这很奇怪,在我看来像MS实现中的一个错误。有没有人有任何想法!!?

(这里的功能区是Microsoft.Windows.Controls.Ribbon)

      <ribbon:RibbonApplicationMenuItem Header="Options Group 1">
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption1}" Header="Option 1" />
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption2}" Header="Option 2"/>
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption3}" Header="Option 3"/>
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption4}" Header="Option 4"/>
       </ribbon:RibbonApplicationMenuItem>


       <ribbon:RibbonApplicationMenuItem Header="Options Group 2">
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption5}" Header="Option 5" IsEnabled="False"/>
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption6}" Header="Option 6"/>
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption7}" Header="Option 7"/>
                        <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption8}" Header="Option 8"/>
       </ribbon:RibbonApplicationMenuItem>

1 个答案:

答案 0 :(得分:0)

我能做的最好是将禁用的菜单项移到第一个启用的菜单项下面。像这样:

   <ribbon:RibbonApplicationMenuItem Header="Options Group 2">
                    <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption6}" Header="Option 6"/>
                    <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption5}" Header="Option 5" IsEnabled="False"/>
                    <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption7}" Header="Option 7"/>
                    <ribbon:RibbonApplicationMenuItem Command="{x:Static viewmodel:commands.ExecuteOption8}" Header="Option 8"/>
   </ribbon:RibbonApplicationMenuItem>

它以这种方式工作,但我知道这不是最好的方法。我认为这个问题没有其他解决办法。