2016-08-31 36 views
0

メニューを含む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を非表示にできますか?

編集:メニュータグをContextMenuタグに変更して修正しました。

+1

は、私は2日間で、それを受け入れるだろう、タイプ回答のオブジェクトを追加しました。 – Sybren

+0

それから、@シブレン - 私はあなたのOPを編集して、 "*私はそれを変更することで修正したのではなく、あなたがそれに答えていることに気づくように提案します。*"あなたは決して知りません。その間に... –

答えて

0

コンテキストメニューでvisibilityプロパティを使用します。コンテキストメニューを隠すにはmenuitemscountをバインドし、コンバーターを使用して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> 
関連する問題