如何去除WPF中MenuItem.Icon左侧及顶部的内边距?
针对你遇到的根MenuItem加号图标因默认边距偏移的问题,不用修改整个MenuItem模板,试试以下几种简单方案:
方案1:直接调整图标对齐与边距
给PackIcon设置居中对齐并清除默认边距,同时给MenuItem去掉内边距:
<Menu Width="45" Height="45" Padding="0" Margin="0"> <MenuItem Background="White" Height="45" Padding="0"> <MenuItem.Icon> <materialDesign:PackIcon Kind="Plus" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/> </MenuItem.Icon> </MenuItem> </Menu>
方案2:用容器包裹图标强制占满
通过Border包裹PackIcon,让容器占满MenuItem的空间,再让图标居中:
<Menu Width="45" Height="45" Padding="0" Margin="0"> <MenuItem Background="White" Height="45" Padding="0"> <MenuItem.Icon> <Border Width="45" Height="45" Padding="0"> <materialDesign:PackIcon Kind="Plus" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> </MenuItem.Icon> </MenuItem> </Menu>
方案3:自定义IconTemplate(轻量模板修改)
不用改整个MenuItem模板,仅自定义图标的模板,让图标拉伸并居中:
<Menu Width="45" Height="45" Padding="0" Margin="0"> <MenuItem Background="White" Height="45" Padding="0"> <MenuItem.IconTemplate> <DataTemplate> <materialDesign:PackIcon Kind="Plus" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> </DataTemplate> </MenuItem.IconTemplate> </MenuItem> </Menu>
补充说明
之前修改PackIcon宽高无效,是因为MenuItem的Icon容器默认带有内边距,且图标默认不是占满容器的对齐方式。以上方案都是从清除边距、强制对齐的角度解决,无需修改完整的MenuItem模板。
内容的提问来源于stack exchange,提问作者Razraaab
相关产品推荐
相关产品推荐

