LoneRay
@LoneRay
Начинающий кодировщик.

Как изменить задний фон дочерних MenuItem?

На картинке у меня получилось сделать для основного меню прозрачный фон и для MenuItem, а вот для дочерних не знаю как. Помогите пожалуйста.
Нужно вместо белого цвета сделать прозрачный.
cGiwFVX3O3
<Menu x:Name="menu" Height="26" VerticalAlignment="Top" Background="{x:Null}" Foreground="{x:Null}">
            <MenuItem  Header="Настройки" Height="26" Foreground="Lime" RenderTransformOrigin="0.5,0.5" Background="Transparent" BorderBrush="Transparent" Padding="6,0" UseLayoutRounding="False">
                <MenuItem Header="Свойства" Foreground="Lime" RenderTransformOrigin="0.5,0.5" Background="Transparent" BorderBrush="Transparent" AutomationProperties.IsColumnHeader="True"/>
                <MenuItem Header="О программе" Foreground="Lime" RenderTransformOrigin="0.5,0.5" Background="Transparent" BorderBrush="Transparent" AutomationProperties.IsColumnHeader="True"/>
                <Separator/>
                <MenuItem Header="Выход" Foreground="Lime" RenderTransformOrigin="0.5,0.5" Background="Transparent" BorderBrush="Transparent" AutomationProperties.IsColumnHeader="True"/>
            </MenuItem>
        </Menu>
  • Вопрос задан
  • 572 просмотра
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Нужно переопределить шаблон элемента меню - просто добавить этот код в Window.Resources и всё, даже добавлять в <Menu> ничего не надо. "MenuItem.TopLevelHeaderTemplateKey" - стандартное название шаблона
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="{x:Type MenuItem}">
    <Border Name="Border" >
        <Grid>
            <ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" />
            <Popup Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsSubmenuOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Fade">
                <Border Name="SubmenuBorder" SnapsToDevicePixels="True" Background="Transparent">
                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" />
                </Border>
            </Popup>
        </Grid>
    </Border>
</ControlTemplate>


Решение вот отсюда. Там они ещё триггеры используют, но здесь не обязательно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы