我工作的一些XAML的WPF應用程序,我有一些麻煩它做我想做的。這是我的XAML的一個樣本:WPF:嵌套的MenuItems在工具欄
<!-- 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>
當我點擊我的工具欄的溢出按鈕,「特殊項目」菜單項出現一個小箭頭旁邊,表示嵌套的元素。但是,當我將鼠標懸停在「特殊項目」上或嘗試單擊它時,MenuItems「C」和「D」未顯示。
我希望菜單項將只是一個菜單之外的工作,但我試着做了直接的東西,以防萬一。在菜單中包含這些MenuItems,而是給這個菜單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>
這段代碼對我不起作用。我必須點擊'Special'才能顯示子菜單。
你知道,這正是我一開始想要做的。我在細讀MSDN並找到了Role屬性,但我不知道改變它的正確方法。然後我發現上面貼出的快速修復剪切和粘貼怪物,哈哈。我是新來的wpf。 我試過了代碼,不幸的是,子菜單沒有出現在鼠標懸停中。我會再調查一下。 – 2009-04-18 02:36:46