如何删除MenuItem.Icon左侧和顶部的填充?

问题描述 投票:0回答:2

我在我的 WPF 项目和 MaterialDesign 中使用 .Net 8.0。我的问题是,我想创建一个菜单,其中根 MenuItem 有一个加号图标,但由于某种原因,尝试创建一个与我的整个 MenuIten 大小相同的图标,但由于边距(或填充),它会向下爬行。这是我的菜单的一些 XAML 代码:

<Border Grid.Column="1" Grid.ColumnSpan="5"
        Grid.Row="1" Padding="30 10">
    <StackPanel Orientation="Horizontal">
        <Menu Width="45" Height="45" Style="{StaticResource ActionItemsMenuStyle}"
              Padding="0" Margin="0">
            <MenuItem Background="White" Height="45">
                <MenuItem.Icon>
                    <materialDesign:PackIcon Kind="Plus"/>
                </MenuItem.Icon>
            </MenuItem>
        </Menu>
    </StackPanel>
</Border>

我尝试改变“”的高度和宽度,但没有效果。在我看来,更改模板菜单项对于此类问题来说是一个相当麻烦的解决方案。我很乐意得到任何答案!

编辑:资源“ActionItemsMenuStyle”为空,不用担心

wpf xaml wpf-controls material-design-in-xaml
2个回答
0
投票

试试这个:

<Border Grid.Column="1" Grid.ColumnSpan="5" Grid.Row="1">
                        <StackPanel Orientation="Horizontal">
                            <Menu Width="45" Height="45" >
                                <MenuItem Background="White" Height="45">
                                    <MenuItem.Icon>
                                        <Path Stretch="Fill" Data="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" Fill="Black"/>
                                    </MenuItem.Icon>
                                </MenuItem>
                            </Menu>
                        </StackPanel>
                    </Border>

它使用路径而不是库,所以你可以根据需要修改它


0
投票

我尝试使用 materialDesign:PackIcon.RenderTransformScaleTransform 来更改图标比例(ScaleX,ScaleY)和位置(CenterX,CenterY)?

类似这样的:

    <Border Grid.Column="1" Grid.ColumnSpan="5"
    Grid.Row="1">
        <StackPanel Orientation="Horizontal">
            <Menu Width="45" Height="45"
            >
                <MenuItem Background="White" Height="45">
                    <MenuItem.Icon>
                        <materialDesign:PackIcon Kind="Plus">
                            <materialDesign:PackIcon.RenderTransform>
                                <ScaleTransform ScaleX="2" ScaleY="2"
                                        CenterX="8" CenterY="20"
                                        />
                            </materialDesign:PackIcon.RenderTransform>
                        </materialDesign:PackIcon>
                    </MenuItem.Icon>
                </MenuItem>
            </Menu>
        </StackPanel>
    </Border>

或者你可以使用 MatrixTransform 而不是 ScaleTransform:

<materialDesign:PackIcon.RenderTransform>
    <MatrixTransform Matrix="0 1 1 0 -7 -15" />
</materialDesign:PackIcon.RenderTransform>

希望至少有一些帮助。

© www.soinside.com 2019 - 2024. All rights reserved.