2015-09-14 2 views
0

Почему он не хочет менять свой цвет? Его всегда выделяют цвет по умолчанию.Меню MenuItem не меняется, когда его выделено

  <Menu> 
      <Menu.Resources> 
       <Style TargetType="{x:Type MenuItem}"> 
        <Style.Triggers> 
         <Trigger Property="IsHighlighted" Value="True"> 
          <Setter Property="Background" Value="Black"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Menu.Resources> 
      <MenuItem Header="Menu" Margin="6" Foreground="White" FontSize="14" FontFamily="Times New Roman"> 
       <MenuItem Header="Add Invoice" Command="{Binding AddInvoice}"/> 
       <MenuItem Header="Invoices List" Command="{Binding AddInvoiceList}" FontFamily="Tahoma" /> 
      </MenuItem> 
      <Menu.Background> 
       <SolidColorBrush /> 
      </Menu.Background> 
     </Menu> 

ответ

1

Проблема в том, что ваш пункт меню применяется ко всем элементам меню, включая основное меню и подменю. Это потому, что они оба являются элементами меню.

Чтобы решить эту проблему, вы можете поместить стиль в окно window.resources и указать этот стиль. Также вы хотите использовать «IsMouseOver» для триггера.

в

<Window.Resources> 
     <Style x:Key="MenuItemWithHighlighting" TargetType="{x:Type MenuItem}"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" 
         Value="True"> 
        <Setter Property="Foreground" 
          Value="Blue" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
</Window.Resources> 

Тогда ваши пункты меню могут ссылаться на этот ресурс.

  <MenuItem Header="Menu" Margin="6" Foreground="White" FontSize="14" FontFamily="Times New Roman"> 
       <MenuItem Header="Add Invoice" Command="{Binding AddInvoice}" 
Style={StaticResource MenuItemWithHighlighting}" /> 
       <MenuItem Header="Invoices List" Command="{Binding AddInvoiceList}" FontFamily="Tahoma" Style={StaticResource MenuItemWithHighlighting}" /> 
      </MenuItem> 
+0

+1

Это работает для переднего плана, который я был в состоянии изменить через мой код, но я хочу, чтобы изменить цвет фона. Я нашел ответ на google: «Причина, по которой триггер свойства не работает, заключается в том, что шаблон управления по умолчанию для MenuItem показывает декоратор в MenuItem, когда мышь находится над MenuItem, которая покрывает фон MenuItem. решение заключается в том, чтобы реализовать собственный шаблон управления для MenuItem самостоятельно ». –

+0

Да, для переднего плана вы можете получить доступ к зависимости, но для фона вам нужно отредактировать шаблон. –

Смежные вопросы