【问题标题】:WPF Transparent menuWPF 透明菜单
【发布时间】:2011-05-01 02:29:45
【问题描述】:

我目前有以下菜单:

        <Menu Grid.Row="1" Margin="3" Background="Transparent">
        <MenuItem Name="mnuFile" Header="File" Background="#28FFAE04" Foreground="#FFFED528">
            <MenuItem Name="mnuSettings" Header="Settings" Background="#28FFAE04" Foreground="#FFFED528" />
            <MenuItem Name="mnuExit" Header="Exit" Background="#28FFAE04" Foreground="#FFFED528" />
        </MenuItem>
        <MenuItem Name="mnuView" Header="View" Background="#28FFAE04" Foreground="#FFFED528" />
        <MenuItem Name="mnuAbout" Header="About" Background="#28FFAE04" Foreground="#FFFED528"  />
    </Menu>

我无法弄清楚如何使下拉半透明或完全透明的部分类似于浮动文本。这样我就可以看到下面的表格了。

任何帮助将不胜感激。 谢谢!

【问题讨论】:

    标签: c# wpf vb.net menu contextmenu


    【解决方案1】:

    为此,您需要更改 MenuItem 模板。实现您想要的最简单的模板更改是这样的:

      <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>
    

    如需更多自定义,我建议使用Blend 编辑您的样式/模板或使用Kaxaml 的简单样式作为您的样式的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2018-08-04
      • 2012-06-07
      • 2016-08-28
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多