Переопределение MenuItem ControlTemplate прерывает события щелчка - PullRequest
0 голосов
/ 05 февраля 2020

Я бы хотел переопределить шаблон элемента управления MenuItem, чтобы я мог настроить цвет фона наведения мыши для моих элементов MenuItem.

Я использую следующий 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>

Любое направление будет с благодарностью. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...