2
是否可以在菜單項中顯示菜單項而無需將其分組到菜單中?沒有菜單的Menuitem
<MenuItem Header="toto">
<MenuItem Header="Titi"></MenuItem>
</MenuItem>
此示例顯示菜單項TOTO,擴展圖像,但不顯示子項時,鼠標在TOTO項目
任何想法?
是否可以在菜單項中顯示菜單項而無需將其分組到菜單中?沒有菜單的Menuitem
<MenuItem Header="toto">
<MenuItem Header="Titi"></MenuItem>
</MenuItem>
此示例顯示菜單項TOTO,擴展圖像,但不顯示子項時,鼠標在TOTO項目
任何想法?
一個解決方案: 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。 (錯誤是子菜單在彈出顯示後不再打開)
你可以使用一種風格和觸發器,可能會更好一點。 – 2012-02-29 12:22:56
您發佈的XAML對我來說看起來完全有效。當我測試它時,Titi項目會在需要一段時間後出現。當您嘗試展開菜單時會發生什麼?你的物體上有任何奇怪的樣式嗎? – 2012-02-29 09:51:38
@ bobsmith833:你是否真的把代碼放在一些元素中,而不是一個菜單? – 2012-02-29 10:33:11
@ H.B。 - 啊,不,我沒有!糟糕...自我注意:在嘗試回答問題之前將大腦放入適當位置。看起來OP已經找到了解決方案。 – 2012-02-29 11:41:32