2012-02-29 59 views
2

是否可以在菜單項中顯示菜單項而無需將其分組到菜單中?沒有菜單的Menuitem

<MenuItem Header="toto"> 
    <MenuItem Header="Titi"></MenuItem> 
</MenuItem> 

此示例顯示菜單項TOTO,擴展圖像,但不顯示子項時,鼠標在TOTO項目

任何想法?

+0

您發佈的XAML對我來說看起來完全有效。當我測試它時,Titi項目會在需要一段時間後出現。當您嘗試展開菜單時會發生什麼?你的物體上有任何奇怪的樣式嗎? – 2012-02-29 09:51:38

+0

@ bobsmith833:你是否真的把代碼放在一些元素中,而不是一個菜單? – 2012-02-29 10:33:11

+0

@ H.B。 - 啊,不,我沒有!糟糕...自我注意:在嘗試回答問題之前將大腦放入適當位置。看起來OP已經找到了解決方案。 – 2012-02-29 11:41:32

回答

6

一個解決方案: XAML

<MenuItem x:Name="MyMenu" MouseEnter="MenuItem_MouseEnter" MouseLeave="MenuItem_MouseLeave" Header="toto" > 
    <MenuItem Header="titi"/> 
</MenuItem> 

後面的代碼:

private void MenuItem_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    this.MyMenu.IsSubmenuOpen = true; 
} 

private void MenuItem_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    this.MyMenu.IsSubmenuOpen = false; 
} 

使用XAML(感謝HB的意見,第一次編輯):

<MenuItem.Style> 
      <Style TargetType="MenuItem"> 
       <Style.Triggers> 
        <Trigger Property="IsHighlighted" Value="True"> 
         <Setter Property="IsSubmenuOpen" Value="True"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="False"> 
         <Setter Property="IsSubmenuOpen" Value="False"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </MenuItem.Style> 

不能使用IsHighlighted錯誤,因爲當鼠標不在它上面時它仍然被突出顯示。 第二編輯:似乎有一個錯誤,當菜單打開時顯示showdialog窗口。所以我們需要結合MouseEnter事件來防止這個bug。 (錯誤是子菜單在彈出顯示後不再打開)

+3

你可以使用一種風格和觸發器,可能會更好一點。 – 2012-02-29 12:22:56