设置MenuItem.Icon中所有图像的宽度和高度

时间:2012-10-05 17:50:58

标签: wpf xaml

像大多数人一样,我正在使用MenuItem的图标。我希望所有这些图像都显示为16x16像素图标。大多数源图像都有这种格式,有些可能是32x32,但所有源图像都略有缩放(大约18x18左右)。

我试过这个,但它不影响图标(如果这是可怕的编码,请通知我。我是xaml的新手。):

<Style TargetType="MenuItem">
    <Setter Property="Padding" Value="6,3" />
    <Setter Property="Height" Value="22" />
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="Image">
                <Setter Property="Height" Value="16" />
                <Setter Property="Width" Value="16" />
            </Style>
        </Setter.Value>
    </Setter>
</Style>

2 个答案:

答案 0 :(得分:2)

我认为为菜单的TargetType="Image"属性设置带ItemContainerStyle的样式没有多大意义。根本不需要设置ItemContainerStyle。只需使用一种修复每个MenuItem高度的样式。然后,图标图像将自动缩放。

<Style TargetType="MenuItem">
    <Setter Property="Height" Value="22" />
</Style>

然后将Icon属性设置为某个图像,也许图像的边距值较小。

<MenuItem Header=... >
    <MenuItem.Icon>
        <Image Margin="2" Source=... />
    </MenuItem.Icon>
</MenuItem>

如果您确实需要将图片大小修改为特定值,只需设置图片的WidthHeight属性。

<MenuItem Header=... >
    <MenuItem.Icon>
        <Image Width="16" Height="16" Source=... />
    </MenuItem.Icon>
</MenuItem>

答案 1 :(得分:0)

浏览了很长一段时间后,我发现了关键字“嵌套样式”,在谷歌搜索后产生了https://stackoverflow.com/a/4078275/653473

<Style TargetType="MenuItem">
    <Setter Property="Padding" Value="6,3" />
    <Setter Property="Height" Value="22" />
    <Style.Resources>
        <Style TargetType="Image">
            <Setter Property="Height" Value="16" />
            <Setter Property="Width" Value="16" />
        </Style>
    </Style.Resources>
</Style>