2012-02-29 3 views
2

Можно ли отображать элементы меню в меню, не группируя его в меню?Menuitem без меню

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

Этот образец дисплея пункт меню тото, разворачивания изображения, но не показывает подэлемент при наведении курсора мыши на элемент Toto

Любая идея?

+0

XAML, который вы опубликовали, выглядит совершенно справедливо для меня. Когда я протестировал его, элемент Titi появится, как требуется, после небольшой задержки. Что происходит, когда вы пытаетесь расширить меню? У вас есть какие-то странные стили, установленные на ваших объектах? –

+0

@ bobsmith833: Вы действительно разместили этот код - это какой-то элемент, который является * не * меню? –

+0

@ H.B. - Ах, нет, я этого не сделал! Ой ... Примечание для себя: подгоните мозг на место, прежде чем пытаться ответить на вопросы. Похоже, что OP все равно нашел решение. –

ответ

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 false, потому что он все еще подсвечивается, когда мышь не над ним. 2nd edit: кажется, что есть ошибка, когда окна showdialog отображаются, когда меню открыто. Поэтому нам нужно объединить с событием MouseEnter, чтобы предотвратить эту ошибку. (ошибка в том, что подменю больше не открывается после всплывающего окна)

+3

Вы можете использовать стиль и триггеры для этого, может быть, немного лучше. –

Смежные вопросы