2016-08-29 132 views
0

我需要根據條件爲根MenuItemCollapsed。我可以將根菜單的子MenuItem設置爲摺疊而不是根。Root MenuItem可見性綁定

背景:基於設置我需要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> 

更改真假之間MySetting設定值,使「子菜單項目」消失或出現,但對根菜單項目沒有影響。我爲什麼會迷失。

+1

爲什麼你不只是使用BoolenToVisbilityConverter? ''你的屬性是靜態的嗎? –

+1

修復它。如果您將此作爲答案發布,我會將其標記爲正確的答案 – Xaphann

回答

1

對於這種簡單的綁定,使用IValueConverter(例如,預包含BooleanToVisibilityConverter

用例:

<SomeParentElement.Resources> 
    <BooleanToVisibilityConverter x:Key="BoolToVisConverter" /> 
</SomeParentElement.Resources> 

<Menu Visibility="{Binding Path=MySetting, 
          Source={StaticResource MyResource}, 
          Converter={StaticResource BoolToVisConverter}}" />