使用图像填充整个MenuButton

时间:2015-08-07 19:42:20

标签: c# .net wpf xaml menuitem

我正在尝试创建一个WPF菜单,该菜单由5个简单的按钮组成,这些按钮完整地填充了单个图像。我创建了以下XAML:

<Menu x:Name="menuMain" Height="40" Margin="0,0,0,0"  VerticalAlignment="Top" HorizontalAlignment="Stretch">
    <MenuItem x:Name="menuItemPrint" Width="40" Height="40">
        <MenuItem.Icon>
            <Image Source="Resources/Images/Yes.png" Width="40" Height="40"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem x:Name="menuItemClear" Width="40" Height="40">
        <MenuItem.Icon>
            <Image Source="Resources/Images/Yes.png" Width="40" Height="40"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem x:Name="menuItemSettings" Width="40" Height="40">
        <MenuItem.Icon>
            <Image Source="Resources/Images/Yes.png" Width="40" Height="40"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem x:Name="menuItemScanner" Width="40" Height="40">
        <MenuItem.Icon>
            <Image Source="Resources/Images/Yes.png" Width="40" Height="40"/>
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem x:Name="menuItemMode" Width="40" Height="40" Click="menuItemMode_Click">
        <MenuItem.Icon>
            <Image Source="Resources/Images/Yes.png" Width="40" Height="40"/>
        </MenuItem.Icon>
    </MenuItem>
</Menu>

但确切的结果如下所示: enter image description here

它仅显示图像的左上角四分之一,并且它似乎也出于某些奇怪的原因而抵消了它?互联网上的几乎所有答案都涉及设置图片的大小,我做了(.PNG大小正好是40x40,菜单项和图像也是如此。

我尝试更改对齐方式,将“填充”设置为“拉伸”并调整边距,但似乎没有任何帮助。

为了记录,我正在尝试实现的目标如下所示(尽管最好使用一个不那么奇怪的丑陋的绿色复选标记。你将不得不原谅我的编辑技巧。)

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试覆盖menuitem模板。这似乎对我有用。

<Menu Height="40">
    <MenuItem Height="40" Width="40">
        <MenuItem.Template>
            <ControlTemplate>
                <Image Source="source path here" />
            </ControlTempalte>
        </MenuItem.Template>
    </MenuItem>
</Menu>

答案 1 :(得分:1)

使用Icon而不是使用Header属性,只需设置margin偏移量。

<MenuItem x:Name="menuItemPrint" Width="40" Height="40">
    <MenuItem.Header>
        <Image Source="Resources/Images/Yes.png" Width="40" Height="40" Margin="-7"/>
    </MenuItem.Header>
</MenuItem>