wpfアプリケーション用のXAMLで作業しています。ここに私のXAMLのサンプルです:WPF:ToolBar内のネストされたMenuItem
<!-- Tool Bar Tray -->
<ToolBarTray Name="toolBarTray1" DockPanel.Dock="Top">
<!-- File And Edit Tools -->
<ToolBar Name="toolBar1" Band="1" BandIndex="1">
<!-- Regular Items -->
<Button>A</Button>
<Button>B</Button>
<!-- Overflow Menu For Special Items -->
<MenuItem ToolBar.OverflowMode="Always" Header="Special Items">
<MenuItem Header="C"/>
<MenuItem Header="D"/>
</MenuItem>
</ToolBar>
</ToolBarTray>
私は私のツールバーのオーバーフローボタンをクリックすると、「特別項目」のMenuItemは、ネストされた要素を示し、その横に小さな矢印が表示されます。しかし、「特別なアイテム」の上にマウスを置いたり、それをクリックしようとすると、MenuItemsの「C」と「D」は表示されません。
私はMenuItemがメニューの外で動作することを望んでいましたが、私はまっすぐなことをやってみました。これらのMenuItemをメニュー内に含め、代わりに、このメニューにToolBar.OverflowMode = "Always"プロパティを指定すると、不要なスタイルが生成されます。矢印はもはや存在せず、サブメニューをアクティブにするためには「特別なアイテム」の項目をクリックする必要があり、サブメニューの配置は少し見える。
何が起こっているのか分かりませんか?
編集:オーバーフローにメニューを追加すると、私が要求したものを正確に生成できます(大きな驚き)。私が後にしているのは、トップレベルのヘッダーとアイテムをサブメニューレベルに変換する方法です。私は解決策(下記)のMSDNのこのコントロールテンプレートの例に向けました。
編集: @gcores(コメント欄):本当ですか?何か不足していますか?
<ToolBar Name="toolBar1" Band="1" BandIndex="4">
<!-- Displayed Buttons -->
<Button>A</Button>
<Button>B</Button>
<!-- Special Items Menu -->
<Menu ToolBar.OverflowMode="Always" >
<MenuItem Style="{StaticResource MenuItemStyle}" Header="Special">
<MenuItem Header="C"/>
<MenuItem Header="D"/>
</MenuItem>
</Menu>
</ToolBar>
このスニペットは私にとっては機能しません。サブメニューを表示するには「特別」をクリックする必要があります。
あなたが知っている、これは私が最初にやろうとしていたものです。私はMSDNを熟読し、Roleプロパティを見つけましたが、それを変更する正しい方法がわかりませんでした。私はそれから、私が上に掲載したクイックフィックスカットアンドペーストの怪物を見つけました。私はwpfに新しいです。 私はコードを試しましたが、残念ながら、サブメニューがマウスオーバーに表示されていません。私はもう少しそれを調べます。 –
ああ、MenuItemをメニューにラップします。それ以外の場合、機能はありません。私はそれを試して、それは動作します。 – gcores
OPの「編集、編集」を参照してください。 –