Wpf 重写MenuItem ControlTemplate会中断单击事件

Wpf 重写MenuItem ControlTemplate会中断单击事件,wpf,xaml,Wpf,Xaml,我想覆盖MenuItem控件模板,以便自定义MenuItems的鼠标覆盖背景色 我正在使用以下xaml: <Style TargetType="MenuItem"> <Setter Property="Background" Value="#26222b"/> <Setter Property="Height" Value="25"/> <Setter Property="BorderThickness"

我想覆盖MenuItem控件模板,以便自定义MenuItems的鼠标覆盖背景色

我正在使用以下xaml:

<Style TargetType="MenuItem">
        <Setter Property="Background" Value="#26222b"/>
        <Setter Property="Height" Value="25"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="MenuItem">
                    <Border Padding="10 0 10 0" 
                            BorderBrush="{TemplateBinding BorderBrush}" 
                            BorderThickness="{TemplateBinding BorderThickness}" 
                            Background="{TemplateBinding Background}">
                        <ContentPresenter x:Name="ContentPresenter"  
                                          Content="{TemplateBinding Header}"
                                          ContentSource="Header"
                                          Margin="{TemplateBinding Padding}"
                                          RecognizesAccessKey="True"
                                          VerticalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsHighlighted" Value="True">
                <Setter Property="Background" Value="#2f2a36"/>
            </Trigger>
        </Style.Triggers>
    </Style>

这与我所期望的风格相同,但按钮不再响应单击事件

我还尝试使用ControlTemplate.Trigger而不是Style.Trigger来进行所需的更改。我不知道哪种解决方案被认为是合适的(请让我知道),但这两种解决方案似乎都没有解决眼前的问题

我的理解是,我应该能够重写元素的样式,而不必重写其单击响应功能,因此我假设我在这里做了一些错误的事情来破坏它

为了以防万一,下面是我定义菜单本身的xaml:

        <Menu Grid.Row="0"
          Grid.ColumnSpan="2"
          IsMainMenu="True">
        <Menu.Items>
            <MenuItem Header="_File" DataContext="{Binding File}">
                <MenuItem Header="_New" Command="{Binding NewCommand}"/>
                <MenuItem Header="_Open" Command="{Binding OpenCommand}" />
                <MenuItem Header="_Save" Command="{Binding SaveCommand}"/>
                <MenuItem Header="_Save as..." Command="{Binding SaveAsCommand}"/>
            </MenuItem>
            <MenuItem Header="_Format" DataContext="{Binding Editor}">
                <MenuItem Header="_Format" Command="{Binding FormatCommand}"/>
                <MenuItem Header="_Word wrap" Command="{Binding WrapCommand}"/>
            </MenuItem>
            <MenuItem Header="_Help" DataContext="{Binding Help}">
                <MenuItem Header="_About" Command="{Binding HelpCommand}"/>
            </MenuItem>
        </Menu.Items>
    </Menu>


任何指示都将不胜感激。提前谢谢

有关更多信息,请参阅。MenuItem模板必须正确实现,我从阅读本文中了解到,我需要覆盖所有列出的控件模板才能进行此更改?也许不是。但是当您修改模板时,您需要遵循原始模板到某一点。在您的示例中,标题有一个ContentPresenter,但是菜单项的其余部分应该显示在哪里?在文档中他们使用了弹出控件。非常感谢,实现弹出控件确实是缺少的一步。如果你写下来作为答案,我会接受的。