2016-08-29 3 views
0

Мне нужен корень MenuItemCollapsed на основе состояния. Я могу получить подменю MenuItem корневого меню с Collapsed, но не root.Root MenuItem Связывание видимости

Предпосылки: На основании настроек мне необходимо, чтобы 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> 

Изменение значения для MySetting между истинным и ложным делает «Sub Menu Item» исчезают или появляются, но не оказывает никакого влияния на корневые пункта меню. Я заблуждаюсь, почему.

+1

Почему вы не просто использовать BoolenToVisbilityConverter? '' Являются ли ваши свойства статическими? –

+1

Это исправлено. Если вы опубликуете это как ответ, я буду отмечать это как правильный ответ – Xaphann

ответ

1

Для этого простого связывания лучше и проще использовать IValueConverter, например. preincluded BooleanToVisibilityConverter. Пример

Использование:

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

<Menu Visibility="{Binding Path=MySetting, 
          Source={StaticResource MyResource}, 
          Converter={StaticResource BoolToVisConverter}}" /> 
Смежные вопросы