Невозможно установить свойство Background элемента MenuItem для события IsPressed

Я хочу изменить фон MenuItem при нажатии MenuItem.

<Style x:Key="{x:Type MenuItem}" TargetType="MenuItem">
    <Style.Triggers>
        <Trigger Property="MenuItem.IsPressed" Value="True">
            <Setter Property="MenuItem.Background" Value="#FFE389" />
            <Setter Property="MenuItem.BorderBrush" Value="#C2762B" />
        </Trigger>
    </Style.Triggers>
</Style>

Я пытался сделать вышеописанное, но триггер, похоже, не работает. Триггер неправильный?

Обновление: это работает для события IsMouseOver, но IsPressed, похоже, не работает

Обновление 2: работает для элементов TopLevelMenuItems, но не работает для элементов TopLevelMenuHeaderItems. альтернативный текст


person Kiang Teng    schedule 05.01.2011    source источник


Ответы (1)


Попробуйте это... которое не предваряет имена свойств префиксом MenuItem и не изменяет синтаксис TargetType и x:Key...

<Style x:Key="MyStyle" TargetType="{x:Type MenuItem}">
    <Style.Triggers>
        <Trigger Property="IsPressed" Value="True">
            <Setter Property="Background" Value="#FFE389" />
            <Setter Property="BorderBrush" Value="#C2762B" />
        </Trigger>
    </Style.Triggers>
</Style>

ИЗМЕНИТЬ:

Основываясь на ваших обновлениях, посмотрите, как MenuItem по умолчанию созданный с помощью XAML. Это должно привести вас к тому, что вам нужно для создания стилей для различных частей файла MenuItem. Обратите внимание на использование свойства Role в стиле MenuItem, относящемся к заголовкам и элементам как на верхнем уровне, так и на подуровне.

person Aaron McIver    schedule 05.01.2011
comment
@Proximo Добавлена ​​ссылка на стиль по умолчанию для MenuItem в MSDN, она должна привести вас туда, куда вам нужно. - person Aaron McIver; 05.01.2011