我有一个用 xaml 构建的菜单,MenuItem 的属性 ItemTemplate 设置为以下模板:
<HierarchicalDataTemplate x:Key="MenuItemTemplate" DataType="{x:Type mainMenu:MenuItem}" ItemsSource="{Binding ChildMenuItems}">
<MenuItem Command="{Binding Command}" CommandParameter="{Binding CommandParameter}" Header="{Binding Path=Header}" Visibility="{Binding Visible, Converter={converter:BooleanToVisibilityConverter}}" />
</HierarchicalDataTemplate>
当我将属性 Visible 的值更改为 false 以隐藏子菜单时,结果是这样的:
子菜单是隐藏的,但它们仍然需要一些空间。如何更改它以适应菜单中剩余的项目数量?
编辑:
这是转换器的代码:
public class BooleanToVisibilityConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool) value ? Visibility.Visible : Visibility.Collapsed;
}
}
最佳答案
我怀疑你回来了 Visibility.Hidden
从你的转换器。而是返回 Visibility.Collapsed
.
来自 MSDN :
此外WPF提供BooleanToVisibilityConverter
,除非做一些额外的事情,否则您不需要重新定义它。您可以像这样在 App 资源部分下添加资源并使用:
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
关于wpf - 动态隐藏菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362729/