Меню без меню - PullRequest
       9

Меню без меню

2 голосов
/ 29 февраля 2012

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

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

В этом примере отображается пункт меню toto, изображение расширителя, но не отображается подэлемент, когда мышь находится над элементом toto

Есть идеи?

1 Ответ

7 голосов
/ 29 февраля 2012

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

...