0

我在我的应用程序中使用 Microsoft 的功能区控件。

我有一个带有相同类型子项的 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>
4

1 回答 1

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>

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

于 2012-07-03T18:31:15.943 回答