0

アプリケーションで Microsoft のリボン コントロールを使用しています。

同じ Kind の SubItems を持つ RibbonApplicationMenuItem があります。リボン メニューの既定の動作では、キーボードを使用してサブメニューを開くと、既定で最初の項目が選択 (および強調表示) されます。

以下のコードに示すように、サブ項目を持つ 2 つのメニュー項目があります。最初のメニューが正しく開き、最初の項目が強調表示されます。しかし、2 番目のメニューを開いたときに、最初の項目が強調表示されません。唯一の違いは、2 番目のメニューで最初の項目が無効になっている (IsEnabled=false) ことです。したがって、次の項目 (2 番目の項目) が強調表示されるはずです。しかし、そうではありません:(。これを修正する方法を知っている人はいますか?

さらに、最悪の部分は、最初のメニューでできるように、上/下矢印キーを使用して 2 番目のメニューのサブメニューをナビゲートできないことです。これは非常に奇妙で、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 に答える