Root MenuItem可见性绑定

时间:2016-08-29 20:15:35

标签: wpf menuitem

我需要根据条件设置根MenuItem Collapsed。我可以将根菜单的子MenuItem转换为Collapsed而不是root。

背景:根据我需要MenuItemsVisibleCollapsed的设置。这种作品。对于子MenuItem,它完美无缺;

<Menu>
    <MenuItem  Header="Root Menu Item" >
        <MenuItem.Style>
            <Style TargetType="{x:Type MenuItem}" >
                <Setter Property="Visibility" Value="Visible" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Source={StaticResource MyResource}, Path=MySetting, UpdateSourceTrigger=PropertyChanged}" Value="False">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </MenuItem.Style>
        <MenuItem Header="Sub Menu Item">
            <MenuItem.Style>
                <Style TargetType="{x:Type MenuItem}" >
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Source={StaticResource MyResource}, Path=MySetting, UpdateSourceTrigger=PropertyChanged}" Value="False">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </MenuItem.Style>
        </MenuItem>
    </MenuItem>
</Menu>

在true和false之间更改MySetting的值会使&#34;子菜单项&#34;消失或出现,但对根菜单项没有影响。我迷失了为什么。

1 个答案:

答案 0 :(得分:1)

对于这种简单的绑定,使用IValueConverter更好更容易,例如预先包含BooleanToVisibilityConverter

用法示例:

<SomeParentElement.Resources>
    <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</SomeParentElement.Resources>
<Menu Visibility="{Binding Path=MySetting, 
                           Source={StaticResource MyResource}, 
                           Converter={StaticResource BoolToVisConverter}}" />