当Source为null时隐藏MenuItem中的图标

时间:2014-11-18 19:07:58

标签: c# wpf xaml triggers menuitem

Icon为空(未指定)时,我试图隐藏MenuItem的{​​{1}}空格。

以下是我所谈论的一个例子。如果未指定Source,我不希望留空的空格IconSource

目前:

Currently

所需:

Desired

以下是菜单xaml代码:

Icon

1 个答案:

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