根菜单项可见性绑定
Root MenuItem Visibility binding
我需要根 MenuItem
Collapsed
根据条件。我可以将根菜单的子 - MenuItem 设置为 Collapsed 但不是根菜单。
背景:根据设置,我需要 MenuItems
为 Visible
或 Collapsed
。这种作品。对于 sub 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 的值会使 "Sub Menu Item" 消失或出现,但对根菜单项没有影响。我不知道为什么。
对于这个简单的绑定,使用 IValueConverter
更好更容易,例如预先包含的 BooleanToVisibilityConverter
.
用法示例:
<SomeParentElement.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</SomeParentElement.Resources>
<Menu Visibility="{Binding Path=MySetting,
Source={StaticResource MyResource},
Converter={StaticResource BoolToVisConverter}}" />
我需要根 MenuItem
Collapsed
根据条件。我可以将根菜单的子 - MenuItem 设置为 Collapsed 但不是根菜单。
背景:根据设置,我需要 MenuItems
为 Visible
或 Collapsed
。这种作品。对于 sub 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 的值会使 "Sub Menu Item" 消失或出现,但对根菜单项没有影响。我不知道为什么。
对于这个简单的绑定,使用 IValueConverter
更好更容易,例如预先包含的 BooleanToVisibilityConverter
.
用法示例:
<SomeParentElement.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</SomeParentElement.Resources>
<Menu Visibility="{Binding Path=MySetting,
Source={StaticResource MyResource},
Converter={StaticResource BoolToVisConverter}}" />