2016-08-31 7 views
0

Я создал ContextMenu с меню внутри него. Меню не всегда имеет элементы. Когда нет элементов, я хочу скрыть ContextMenu.Скрыть ContextMenu, когда в меню нет элементов

Соответствующий код в моем стиле (Generic.xaml)

<Grid.ContextMenu> 
<ContextMenu Margin="10,10,0,13" Name="ContextMenu" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False"> 
<Menu> 
    <Menu.ItemsSource> 
     <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ChildCommands"/> 
    </Menu.ItemsSource> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="MenuItem.Header" Value="{Binding Command.Text}"/> 
      <Setter Property="MenuItem.IsEnabled" Value="False"/> 
     </Style> 
    </Menu.ItemContainerStyle> 
    <Menu.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </Menu.ItemsPanel> 
</Menu> 
</ContextMenu> 
</Grid.ContextMenu> 

Как я могу скрыть ContextMenu, когда нет внутри него пунктов меню?

EDIT: Я исправил его, изменив теги меню на теги ContextMenu.

+1

Добавлен объект типа ответа, я приму его в течение двух дней. – Sybren

+0

Затем @Sybren - я бы предложил изменить ваш OP еще раз, чтобы отметить, что вы ответили ниже, а не «* Я исправил его, изменив ...» «Вы никогда не знаете, у вас может быть лучший ответ, в то же время ... –

ответ

0

Используйте свойство видимости в контекстном меню. Слишком скрыть контекстное меню привязать меню menuscount и использовать конвертер для преобразования Count в список видимости.

+0

Я уже исправил это. См. Мое редактирование. – Sybren

0

Я изменил теги меню на теги ContextMenu и теперь работает. ContextMenu отображается только в том случае, если в нем есть элементы.

Код:

<Grid.ContextMenu> 
<ContextMenu Margin="10,10,0,13" Name="ContextMenu" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False"> 
    <ContextMenu.ItemsSource> 
     <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ChildCommands"/> 
    </ContextMenu.ItemsSource> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="MenuItem.Header" Value="{Binding Command.Text}"/> 
      <Setter Property="MenuItem.IsEnabled" Value="False"/> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
    <ContextMenu.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </ContextMenu.ItemsPanel> 
</ContextMenu> 
</Grid.ContextMenu> 
Смежные вопросы