Reputation: 3677
I need to a root MenuItem
Collapsed
based on a condition. I can get sub - MenuItem of the root menu to Collapsed but not the root.
Background: Based on settings I need to MenuItems
to be Visible
or Collapsed
. This kind of works. For sub MenuItem
it works perfectly;
<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>
Changing the value for MySetting between true and false makes the "Sub Menu Item" disappear or a appear, but has no effect on the Root Menu Item. I am at a lost as to why.
Upvotes: 0
Views: 388
Reputation:
For this simple Binding it's better and easier to use an IValueConverter
, e.g. the preincluded BooleanToVisibilityConverter
.
Usage example:
<SomeParentElement.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</SomeParentElement.Resources>
<Menu Visibility="{Binding Path=MySetting,
Source={StaticResource MyResource},
Converter={StaticResource BoolToVisConverter}}" />
Upvotes: 1