Sto lavorando ad alcuni XAML per un'applicazione wpf e sto avendo qualche problema a farlo fare ciò che voglio. Ecco un esempio del mio XAML:WPF: MenuItem nidificati in una barra degli strumenti
<!-- 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>
Quando clicco sul pulsante di overflow della mia barra degli strumenti, gli "Elementi speciali" MenuItem appare con una piccola freccia accanto ad esso, indicando gli elementi annidati. Tuttavia, quando si passa il mouse su "Oggetti speciali" o si tenta di fare clic su di esso, i MenuItem "C" e "D" non vengono visualizzati.
Speravo che MenuItem funzionasse solo al di fuori di un Menu, ma ho cercato di fare la cosa semplice, per ogni evenienza. Includendo questi MenuItem all'interno di un Menu e, invece, dando a questo Menu la proprietà ToolBar.OverflowMode = "Always" produce uno stile indesiderato. La freccia non è più presente, è necessario fare clic sulla voce "Elementi speciali" per attivare il sottomenu e il posizionamento del sottomenu appare leggermente disattivato.
Qualcuno sa cosa sta succedendo?
Modifica: l'aggiunta di un menu all'overflow produce esattamente ciò che ho richiesto (grande sorpresa). Quello che sto cercando è un modo per convertire intestazioni e voci di livello superiore a livello di sottomenu. Mi sono rivolto a questo esempio di modello di controllo su MSDN per una soluzione (sotto).
Modifica, Modifica: @gcores (discussione di commenti): Davvero? Mi sto perdendo qualcosa?
<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>
Questo snippet non funziona per me. Devo fare clic su "Speciale" per visualizzare il sottomenu.
Sapete, questo è esattamente quello che stavo cercando di fare in un primo momento. Stavo controllando MSDN e ho trovato la proprietà Role, ma non conoscevo il modo corretto per cambiarlo. Ho poi trovato quella dimostrazione di taglia e incolla a correzione rapida che ho postato sopra, lol. Sono nuovo di wpf. Ho provato il codice e, sfortunatamente, il sottomenu non appare al passaggio del mouse. Lo esaminerò un po 'di più. –
Oh, avvolgi il tuo MenuItem in un Menu. Altrimenti non c'è funzionalità. L'ho provato e funziona. – gcores
Vedere "Modifica, modifica" in OP. –