当Icon
为空(未指定)时,我试图隐藏MenuItem
的{{1}}空格。
以下是我所谈论的一个例子。如果未指定Source
,我不希望留空的空格IconSource
目前:
所需:
以下是菜单xaml代码:
Icon
答案 0 :(得分:1)
实际上我在评论中说的是真的,但对于Sub MenuItem,对于顶级菜单项,所有组件都放在DockPanel
中,实际上当Icon
为空时,它将被折叠(默认样式中已经有一个触发器执行此操作,因此您不必添加自己的触发器)。默认图标占位符的保证金为"4,0,6,0"
。这就是为什么Icon
不为空时总是有空格(即使设置为Icon
的元素已折叠)。
这意味着除非我们将ContentPresenter
设置为Icon
,否则我们无法折叠null
(图标占位符)。在这种情况下,当使用Icon
这样的来源为空时,您可以尝试将null
设置为DataTrigger
:
<Style TargetType="MenuItem">
<!-- ... -->
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.IconSource,
RelativeSource={RelativeSource AncestorType=Menu}}"
Value="{x:Null}">
<Setter Property="Icon" Value="{x:Null}"/>
</DataTrigger>
</Style.Triggers>
</Style>