2

我创建这样的弹出菜单。

<DockPanel.ContextMenu>
    <ContextMenu Background="#CD252220" Opacity="0.95" Foreground="LightGray" BorderBrush="DarkGray">
        <MenuItem Header="_Save Image..." x:Name="btSave" IsEnabled="False" Click="btSave_Click" Style="{StaticResource MyStyle}">
            <MenuItem.Icon>
                <Image Source="icons/save.png" Width="16" Height="16" Style="{StaticResource IconStyle}"/>
            </MenuItem.Icon>
        </MenuItem>
    </ContextMenu>
</DockPanel.ContextMenu>

为什么这个菜单的左边是白色的??????它将是#CD252220 颜色或透明的,发髻不是白色的!!!!!!如何解决?:)

http://itrash.ru/idb/40e872e71346dcf9bd58ba8aec0b2a17/omenu.png.html - 菜单截图

PS在XP中没关系。菜单仅在 Vista 上为白色(没有 W7)

4

2 回答 2

4

我找到解决方案!您只需在 Style-defenition 部分设置属性OverridesDefaultStyle ;)

<Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border Background="#CD222120" CornerRadius="7, 7, 8, 8" BorderBrush="DarkGray" BorderThickness="2" Opacity="0.96">
<StackPanel ClipToBounds="True" Orientation="Vertical" IsItemsHost="True" Margin="5,4,5,4"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="{x:Type MenuItem}">
<Border Name="Border" >
<Grid>
<ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" />
</Grid>
</Border>
</ControlTemplate>
于 2009-11-06T15:15:44.710 回答
-2

如果你要为你的上下文菜单声明一个自定义样式,这样它对于所有操作系统都是一样的。

于 2009-11-06T06:33:16.087 回答