C# 用图像填充整个菜单按钮

C# 用图像填充整个菜单按钮,c#,.net,wpf,xaml,menuitem,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"> <Men

我正在尝试创建一个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>

但具体结果如下所示:

它只显示图像左上角的四分之一,而且它似乎也因为一些奇怪的原因而抵消了它?互联网上几乎所有的答案都涉及到设置图片的大小,我就是这么做的(PNG的大小正好是40x40,菜单和图片也是如此)

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

为了记录在案,我试图实现的目标如下所示(不过最好是用一个不那么丑陋的绿色复选标记。你必须原谅我的编辑技巧)


尝试覆盖menuitem模板。这似乎适合我

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

不要使用
图标
属性,而是使用
标题
,只需设置
边距
偏移量即可

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


原始图像有多大?大于还是小于40x40?@d正如我所提到的,它正好是40x40。虽然这解决了大小和对齐问题,但这种方法的问题是它会删除正确菜单项的所有行为。例如,当我将鼠标移到上方时,我不再得到方形荧光灯,例如,这种行为为什么我首先要把它做成一个菜单项:(哦,是的。我没有想到。d moncada的解决方案似乎很好。这确实有效!我仍然很困惑为什么我的原始解决方案不起作用,但谢谢!没问题!而且,由于您为每个图像设置了许多相同的属性,您可能希望创建一种所有图像都使用的样式。它更干净,如果y如果你想要改变,你只需要在一个地方改变它