Установка стиля ContextMenu для подразделов - PullRequest
1 голос
/ 13 марта 2010

Я создал собственный стиль и шаблон для MenuItem и ContextMenu, и для моего первого уровня это прекрасно работает, но когда я добавляю элемент SubMenu, стиль этого ContextMenu возвращается к стилю по умолчанию. Как я могу убедиться, что этот предмет использует мой собственный стиль? Я также попытался использовать синтаксис <; Style TargetType = "ContextMenu" Key = "{x: Type ContextMenu}", и он, похоже, не переопределяет его.

1 Ответ

2 голосов
/ 13 марта 2010

Проблема в том, что стиль применяется к дочерним элементам меню ContextMenu. Поскольку они сами являются ItemsControls, внуки выбирают ItemContainerStyle из стиля MenuItem. Я бы предложил вытянуть стиль MenuItem в отдельный ресурс, а затем использовать его так:

<Style x:Key="menuItemStyle" TargetType="{x:Type MenuItem}">
   ...
</Style>

<Style TargetType="{x:Type ContextMenu}">
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource menuItemStyle}">
                <Setter Property="ItemContainerStyle" Value="{StaticResource menuItemStyle}" />
            </Style>
        </Setter.Value>
    </Setter>
</Style>
...