MenuItem Непрозрачность фона, но не его текст? - PullRequest
1 голос
/ 10 августа 2011

Как установить фоновую непрозрачность элемента меню на 0,0, но при этом по-прежнему отображается текст с непрозрачностью 1,0?

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Для этого необходимо установить цвет фона без альфа-канала (первые две цифры в шестнадцатеричном цвете 0x00000000).Это сделает цвет фона полностью прозрачным.Затем ваш текст должен быть любого цвета с 0xFF для альфа-канала (по умолчанию).

2 голосов
/ 10 августа 2011

См. Этот вопрос: Прозрачное меню WPF

Вам необходимо перезаписать шаблон меню.Скопируйте / Вставьте это в ваш Window.Resources или Menu.Resources

<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.Triggers>
      <Trigger Property="IsSuspendingPopupAnimation" Value="true">
        <Setter TargetName="Popup" Property="PopupAnimation" Value="None"/>
      </Trigger>
      <Trigger Property="IsHighlighted" Value="true">
        <Setter TargetName="Border" Property="Background" Value="#C0C0C0"/>
        <Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/>
      </Trigger>
      <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True">
        <Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="0,0,4,4"/>
        <Setter TargetName="SubmenuBorder" Property="Padding" Value="0,0,0,3"/>
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="#888888"/>
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
...