2012-05-01 2 views
4

У меня есть некоторые ContextMenu С некоторыми элементами меню. Одним из элементов меню является «Добавить элемент ...». когда пользователь выберет этот элемент, он должен увидеть подменю со списком доступных предметов;Элементы ContextMenu Видимость

здесь описание моего Контекстное:

  • Добавить Item
    • Пункт 1
    • Пункт 2
    • Пункт 3
    • Пункт 4
  • Удалить
  • Copy

ItemsSource из 'Добавить элемент' MENUITEM является переплетены в некоторой наблюдаемой коллекции. Каждая модель в коллекционере имеет «Имя» и «IsEnabled» (у меня есть конвертер, который конвертирует bool в видимость). Все работает отлично, за исключением того факта, что элементы, имеющие «IsEnable» = false, не видны, но я вижу там пространство. , например: пусть говорят, что пункт 3 имеет IsEnable = ложный:

  • Добавить элемент

    • Пункт 1
    • Пункт 2

    • Пункт 4

Мой конвертер bool2Vis возвращает «Свернутый» в случае ложного значения.

Что я делаю неправильно?

Вот ContextMenu Код:

<ContextMenu x:Key="mainContextMenu" DataContext="{Binding Source={x:Static fw:UIMainManager.Instance},Path=layoutManager}"> 
     <MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}" > 
      <MenuItem.ItemTemplate> 
       <DataTemplate> 
        <MenuItem Header="{Binding ControlName}" Visibility="{Binding IsEnabled,Converter={StaticResource boolToVisibilityConverter}}" 
            Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}" CommandParameter="{Binding}"/> 
       </DataTemplate> 
      </MenuItem.ItemTemplate> 
     </MenuItem> 
     <MenuItem Header="Copy" Command="{Binding Source={x:Static fw:ApplicationCommands.Copy}}" /> 
     <MenuItem Header="Paste" Command="{Binding Source={x:Static fw:ApplicationCommands.Paste}}" /> 
     <MenuItem Header="Cut" Command="{Binding Source={x:Static fw:ApplicationCommands.Cut}}" /> 
     <MenuItem Header="Duplicated" Command="{Binding Source={x:Static fw:ApplicationCommands.DuplicateControl}}" /> 
     <MenuItem Header="Delete" Command="{Binding Source={x:Static fw:ApplicationCommands.DeleteControl}}" /> 
    </ContextMenu> 

ответ

1

Я думаю, что MenuItem свернут, но не ItemContainer из MenuItem. Попробуйте следующее:

<MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}"> 
    <MenuItem.ItemContainerStyle> 
     <Style> 
      <Setter Property="Visibility" Value="{Binding IsEnabled, Converter={StaticResource boolToVisibilityConverter}}" /> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding ControlName}" 
         Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}" 
         CommandParameter="{Binding}" /> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 
+0

Спасибо! Это фиксировало проблему – leonnoah

Смежные вопросы