Цвет фона выпадающего меню wpf MenuItem - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу изменить цвет фона выпадающего меню MenuItems, и я обнаружил, что могу сделать это, если я изменяю ControlTemplate "x: Static MenuItem.TopLevelHeaderTemplateKey".

Я скопировал controlTemplateот Здесь и отредактируйте все цвета, но теперь говорится, что «StaticResource MenuScrollViewer» неизвестен.Я добавил этот ресурс также с того же сайта, но многие другие ресурсы отсутствуют в MenuScrollView.

Итак, как мне отредактировать этот шаблон, чтобы я мог изменить все цвета "MenuItem.TopLevelHeaderTemplateKey"?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы найдете шаблоны по умолчанию вместе со всеми ссылочными ресурсами в сборках PresentationFramework.* в C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\.

Загрузите dotPeek или используйте другой декомпилятор .NET для декомпиляции, посмотрите ресурсы BAML в Resources -> PresentationFramework.*.g.resources -> themes.

0 голосов
/ 14 декабря 2018

Шаблон находится на странице, на которую вы ссылаетесь.Или хотя бы английская версия.Вот кнопка меню:

    <Style x:Key="MenuScrollButton" BasedOn="{x:Null}" TargetType="{x:Type RepeatButton}">
        <Setter Property="ClickMode" Value="Hover"/>
        <Setter Property="MinWidth" Value="0"/>
        <Setter Property="MinHeight" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RepeatButton}">
                    <DockPanel Background="Transparent" SnapsToDevicePixels="true">
                        <Rectangle x:Name="R1" DockPanel.Dock="Right" Fill="Transparent" Width="1"/>
                        <Rectangle x:Name="B1" DockPanel.Dock="Bottom" Fill="Transparent" Height="1"/>
                        <Rectangle x:Name="L1" DockPanel.Dock="Left" Fill="Transparent" Width="1"/>
                        <Rectangle x:Name="T1" DockPanel.Dock="Top" Fill="Transparent" Height="1"/>
                        <ContentPresenter x:Name="ContentContainer" HorizontalAlignment="Center" Margin="2,2,2,2" VerticalAlignment="Center"/>
                    </DockPanel>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter Property="Fill" TargetName="R1" Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
                            <Setter Property="Fill" TargetName="B1" Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
                            <Setter Property="Fill" TargetName="L1" Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
                            <Setter Property="Fill" TargetName="T1" Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
                            <Setter Property="Margin" TargetName="ContentContainer" Value="3,3,1,1"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Для всех извлеченных шаблонов см .:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/41ad0250-d0f9-4a24-b668-35020f0cfdf9/wpf-menu-customization?forum=wpf

...